我有一个数据类型为bytes
的panda系列,我想转换它以进行操作和解析内容。
import pandas as pd
from ast import literal_eval
df = pd.DataFrame({'id': [0],
'bdata': ["b'{"status":"SuccessWithResult","total":13}"]
})
type(df['bdata'][0])
bytes
# Transform to dict
df_zillow_az_v2['attom'] = df_zillow_az_v2['attom'].apply(literal_eval)
ValueError: malformed node or string: b'
如何将bytes
类型的熊猫系列转换为json
或dict
类型?
- 数据可能显示为
str
,但实际存储为熊猫数据帧中的bytes
bdata
列的值不是bytes
,它们是字符串,正如type(df['bdata'][0])
告诉您的那样。b'
具有误导性。因此,在应用literal_eval
之前,必须从字符串中删除字符b'
。你可以使用Series.str.strip
from ast import literal_eval
import pandas as pd
df = pd.DataFrame({'id': [0],
'bdata': ["b'{"status":"SuccessWithResult","total":13}"]
})
df['bdata'] = df['bdata'].str.strip("b'").apply(literal_eval)
输出:
>>> df['bdata']
0 {'status': 'SuccessWithResult', 'total': 13}
Name: bdata, dtype: object
>>> df['bdata'].apply(type)
0 <class 'dict'>
Name: bdata, dtype: object