我有一个现有的JSON文件格式的字典列表。
$cat output.json
[{'a':1, 'b':2}, {'a':2, 'b':3}]
我有一个数据框
df = pd.DataFrame({'a':pd.Series([1,2], index=list('CD')), \
"b":pd.Series([3,4], index=list('CD')})
我想用to_json保存“df”,以便将其附加到文件output.json中:
df.to_json('output.json', orient='records') # mode='a' not available for to_json
- to_csv有append mode='a',但实际上to_json没有。
预期生成的output.json文件为:
[{'a':1, 'b':2}, {'a':2, 'b':3}, {'a':1, 'b':3}, {'a':2, 'b':4}]
现有的output.json文件可能很大(比如Tetabytes),是否可以在不加载文件的情况下追加新的 Dataframe 结果?
5条答案
按热度按时间blmhpbnm1#
没有,如果不使用
pandas
或json
模块重写整个文件,你就不能追加到json文件中。你可以“手动”修改文件,方法是在a
模式下打开文件,找到正确的位置并插入数据。但我不推荐这样做。如果您的文件要比RAM大,最好使用json以外的文件格式。这个answer可能也有帮助,它不会创建有效的json文件(相反,每行都是一个json字符串),但是它的目标和你的非常相似。
3gtaxfhh2#
也许你需要从
orient='records'
的Angular 来考虑:加载完整数据
bwleehnv3#
我已经解决了它只是使用内置Pandas。DataFrame方法。你需要记住的情况下巨大的 Dataframe 的性能(有办法处理它)。代码:
ctrmrzij4#
例如,用小内存将大量数据写入JSON文件:
假设我们有1,000个 Dataframe ,每个 Dataframe 相当于1000,000行json,每个 Dataframe 需要100MB,总文件大小为1000 * 100MB = 100GB。
解决方案:
1.使用缓冲区存储每个 Dataframe 的内容
1.我用Pandas把它转换成文本
1.使用附加模式写入文本到文件的结尾
nhhxz33t5#
你可以这样做,它会把每条记录/行写成json,并在新的一行中。