我使用pandas来处理数据帧。我创建了一个数据框,其行如下:[id, vector]
其中id是string类型,vector是string类型。
现在我将它写入csv文件时该行看起来像这样(在csv文件中):
25377bc2-d3b6-4699-a466-6b9f544e8ba3 {u'sport>sports event>world championship': 0.5058, u'sport>sports event': 0.7032, u'sport>soccer': 0.6377, u'lifestyle and leisure>game': 0.4673, u'sport>sports event>world cup': 0.6614, u'sport>sports event>international tournament': 0.454, u'sport>sports event>national tournament': 0.541, u'sport': 0.9069, u'sport>sports organisations>international federation': 0.5046, u'sport>sports organisations': 0.6982}
我试图将它从csv读回到pandas数据框中,但是当我查看曾经是dict
的向量类型时,它现在是<type 'str'>
我知道我可以用pickle解决它并将pandas数据框保存到pickle文件中。但有没有办法正确读取csv(其中的向量是字典类型)
答案 0 :(得分:2)
我认为您可以使用json
更好的结构csv
来保存dicts
。
对于写入使用to_json
和带有参数orient='records'
的阅读read_json
,感谢piRSquared发表评论:
df = pd.DataFrame({'vector':[{'a':1, 'b':3}, {'a':4, 'b':6}], 'ID':[2,3]})
print (df)
ID vector
0 2 {'b': 3, 'a': 1}
1 3 {'b': 6, 'a': 4}
df.to_json('file.json', orient='records')
ID vector
0 2 {'b': 3, 'a': 1}
1 3 {'b': 6, 'a': 4}
df = pd.read_json('file.json', orient='records')
print (df)
print (df.applymap(type))
ID vector
0 <class 'int'> <class 'dict'>
1 <class 'int'> <class 'dict'>
EDIT1:
如果必须使用相同的列顺序,则索引值使用:
df.to_json('file.json', orient='split')
df = pd.read_json('file.json', orient='split')