我有一个用例,我需要将dataframe的现有列转换为JSON并只存储在一个列上。在
到目前为止,我试过:
import pandas as pd
import json
df=pd.DataFrame([{'a':'sjdfb','b':'jsfubs'},{'a':'ouhbsdv','b':'cm osdn'}]) #Random data
jsonresult1=df.to_json(orient='records')
# '[{"a":"sjdfb","b":"jsfubs"},{"a":"ouhbsdv","b":"cm osdn"}]'
但我希望数据只是字典的字符串表示,而不是列表。所以我试了一下:
^{pr2}$这是我想要的数据,但当我试图使它成为一个数据帧时,数据帧的格式又是2列[a,b]。这些dictionary对象的字符串表示将以所需格式将列数据插入到dataframe中。在
>>>for i in range(len(jsonresult2)):
... jsonresult3.append(str(jsonresult2[i]))
...
>>> jsonresult3
["{'a': 'sjdfb', 'b': 'jsfubs'}", "{'a': 'ouhbsdv', 'b': 'cm osdn'}"]
这正是我想要的。当我把这个推到一个数据帧时,我得到:
>>> df1
0
++++++++++++++++++++++++++++++++++++
0 | {'a': 'sjdfb', 'b': 'jsfubs'}
1 |{'a': 'ouhbsdv', 'b': 'cm osdn'}
但我觉得这是一个非常低效的方法。我如何使它看起来和工作在一个优化的方式?我的数据可以超过10万行。这花的时间太长了。在
我先把它改成字典。。。连成一系列。。。然后应用
pd.json.dumps
或更短的代码
^{pr2}$我们可以通过自己构造弦来提高性能
如果内存是个问题,我会将
df
保存到一个csv中,并逐行读取,同时构建一个新的序列或数据帧。在这是比较慢的,但是可以解决一些内存问题。在
或者,如果可以将
df
保留在内存中,则可以跳过文件导出计时
^{pr2}$相关问题 更多 >
编程相关推荐