问题描述
我手动创建了一个数据框:
import pandas as pd
df_articles1 = pd.DataFrame({'Id' : [4,5,8,9],'Class':[
{'encourage': 1,'contacting': 1},{'cardinality': 16,'subClassOf': 3},{'get-13.5.1': 1},{'cardinality': 12,'encourage': 1}
]
})
我将其导出为 csv 文件以在拆分后导入:
df_articles1.to_csv(f"""{path}articles_split.csv""",index = False,sep=";")
我可以用 pd.json_normalize() 分割它:
df_articles1 = pd.json_normalize(df_articles1['Class'])
我将其 csv 文件导入 Panda Dataframe:
df_articles2 = pd.read_csv(f"""{path}articles_split.csv""",sep=";")
但拆分失败并显示“AttributeError: 'str' object has no attribute 'values'”pd.json_normalize(df_articles2['Class'])
谢谢。
解决方法
那是因为当您通过 to_csv()
保存时,'Class' 列中的数据存储为 string
而不是 dictionary/json
,因此在加载保存后数据:
df_articles2 = pd.read_csv(f"""{path}articles_split.csv""",sep=";")
然后使用eval()
方法和apply()
方法使其恢复原始形式:-
df_articles2['Class']=df_articles2['Class'].apply(lambda x:eval(x))
最后:
resultdf=pd.json_normalize(df_articles2['Class'])
现在如果你打印 resultdf
你会得到你想要的输出