pandas系列包含json或dictionary类型的字节或字符串数据



我有一个数据类型为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类型的熊猫系列转换为jsondict类型?

  • 数据可能显示为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

最新更新