如何将包装字节转换为 Python Dataframe 中的实际字节?
How to Convert Wrapped Bytes to Actual Bytes in Python Dataframe?
我的 pandas 数据框中有一列存储字节。我相信当我将字节放入数据帧时,字节会被转换为字符串,因为数据帧不支持将实际字节作为数据类型。因此,列值不是 b'1a2b'
,它最终被包裹在这样的字符串中:"b'1a2b'"
.
我将这些值传递给需要字节的 a method。当我像这样 ParseFromString("b'1a2b'")
传递它时,我收到错误消息:
TypeError: memoryview: a bytes-like object is required, not 'str'
我很困惑在这种情况下编码或解码是否有效,或者是否有其他方法可以将包装的字节转换为字节? (我正在使用 Python 3)
由于这些值在数据帧中,我可以在从字符串-->字节-->协议缓冲区的转换过程中使用辅助方法,因为实际的数据帧可能无法将其存储为字节。例如,my_dataframe.apply(_helper_method_convert_string_to_bytes_to_protobuf)
.
所以问题似乎是您无法从字符串中提取字节对象。当您将字符串传递给需要像 b'1a2b'
这样的字节对象的函数时,它会抛出错误。我的建议是尝试将您的字符串包装在 eval
函数中。喜欢:
a = "b'1a2b'"
b = eval(a)
b 就是你想要的。您还没有分享您的功能代码,所以我无法为您修改实际代码。
您可以在这里采取一些方法,注意 eval()
被认为是不好的做法,最好尽可能避免这种做法。
- 将您的字节表示存储为字符串并
encode()
调用函数
- 从字符串中提取字节表示,然后调用
encode()
函数
虽然如果可能,最好在导入数据时将 bytes
存储为 1a2b
,如果不可能,您可以使用 regex
提取内容b''
之间的字符串并将结果传递给 encode()
.
import re
string = "b'1a2b'"
re.search(r"(?<=').*(?=')", string).group().encode()
输出:
#b'1a2b'
type(re.search(r"(?<=').*(?=')", string).group().encode())
#<class 'bytes'>
我的 pandas 数据框中有一列存储字节。我相信当我将字节放入数据帧时,字节会被转换为字符串,因为数据帧不支持将实际字节作为数据类型。因此,列值不是 b'1a2b'
,它最终被包裹在这样的字符串中:"b'1a2b'"
.
我将这些值传递给需要字节的 a method。当我像这样 ParseFromString("b'1a2b'")
传递它时,我收到错误消息:
TypeError: memoryview: a bytes-like object is required, not 'str'
我很困惑在这种情况下编码或解码是否有效,或者是否有其他方法可以将包装的字节转换为字节? (我正在使用 Python 3)
由于这些值在数据帧中,我可以在从字符串-->字节-->协议缓冲区的转换过程中使用辅助方法,因为实际的数据帧可能无法将其存储为字节。例如,my_dataframe.apply(_helper_method_convert_string_to_bytes_to_protobuf)
.
所以问题似乎是您无法从字符串中提取字节对象。当您将字符串传递给需要像 b'1a2b'
这样的字节对象的函数时,它会抛出错误。我的建议是尝试将您的字符串包装在 eval
函数中。喜欢:
a = "b'1a2b'"
b = eval(a)
b 就是你想要的。您还没有分享您的功能代码,所以我无法为您修改实际代码。
您可以在这里采取一些方法,注意 eval()
被认为是不好的做法,最好尽可能避免这种做法。
- 将您的字节表示存储为字符串并
encode()
调用函数 - 从字符串中提取字节表示,然后调用
encode()
函数
虽然如果可能,最好在导入数据时将 bytes
存储为 1a2b
,如果不可能,您可以使用 regex
提取内容b''
之间的字符串并将结果传递给 encode()
.
import re
string = "b'1a2b'"
re.search(r"(?<=').*(?=')", string).group().encode()
输出:
#b'1a2b'
type(re.search(r"(?<=').*(?=')", string).group().encode())
#<class 'bytes'>