Python 将不同数据帧的列表保存到json

Python 将不同数据帧的列表保存到json,python,json,Python,Json,我有不同的数据帧,我把它们放在一个列表中。 我想把这个列表保存为json或任何其他可以被R读取的格式 import pandas as pd def create_df_predictions(extra_periods): """ make a empty df for predictions params: extra_periods = how many prediction in the future the user wants """ d

我有不同的数据帧,我把它们放在一个列表中。 我想把这个列表保存为json或任何其他可以被R读取的格式

import pandas as pd

def create_df_predictions(extra_periods):
    """
    make a empty df for predictions  
    params: extra_periods = how many prediction in the future the user wants
    """
    df = pd.DataFrame({ 'model': ['a'], 'name_id': ['a'] })
    for col in range(1, extra_periods+1):
        name_col = 'forecast' + str(col)
        df[name_col] = 0

    return df

df1 = create_df_predictions(9) 
df2 = create_df_predictions(12)
list_df = [df1, df2]

问题是如何将list_df以可读格式保存为R?请注意,df1和df2的列数不同

我不知道熊猫数据帧的细节,所以这可能行不通。但如果它是一种传统的dict,您应该能够使用json模块

df1 = create_df_predictions(9) 
df2 = create_df_predictions(12)
list_df = [df1, df2]
您可以使用json.dumpslist_df将其写入一个文件,该文件将把DICT列表转换为有效的json表示形式

import json
with open("my_file", 'w') as outfile:
    outfile.write(json.dumps(list_df))
编辑:正如DaveR评论的那样,数据帧是不可序列化的。您可以将它们转换为dict,然后将列表转储为json

import json
with open("my_file", 'w') as outfile:
    outfile.write(json.dumps([df.to_dict() for df in list_df]))

或者,pd.DataFrame和pd.Series有一个to_json方法,也许也可以看看这些方法。

要将数据帧列表导出到单个json文件,您应该将列表转换为数据帧,然后使用to_json函数,如下所示:

df_to_export = pd.DataFrame(list_df)
json_output = df_to_export.to_json()
with open("output.txt", 'w') as outfile:
    outfile.write(json_output)

这将把完整的数据集导出到一个json字符串并导出到一个文件。

它们需要在一个json文件中,还是每个数据帧一个json合适?@carthurs的想法是将整个列表保存在一个文件中!顺便说一句,python是3.6版,如果这有任何不同,如果您尝试我的代码,您将使用您的解决方案得到以下错误:不是JSONserializable@olish谢谢,我在结尾处得到一个错误:TypeError:keys必须是字符串。另外,我知道使用json的方法,但是当我想转换整个列表时,它会将每个df转换成一个json文件,对吗?@DaveR这不应该发生在您的示例代码中,因为您只有来自{'model':['a'],'name_id':['a']}和name_col='forecast'+strcol的字符串作为键。如果您添加更多的键/列,请确保将它们转换为字符串。最后,我明白这不是正确的方法。最后,我对每个数据帧使用csv作为输出,可以在R中轻松读取