将不同 Dataframe 的列表保存到 json

问题描述 投票:0回答:3

我有不同的 pandas 数据框,我将其放入列表中。 我想将此列表保存为 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 的列数不同!

python json
3个回答
3
投票

不详细了解 panda DataFrames,所以这可能行不通。但如果它是一种传统的字典,你应该能够使用 json 模块。

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

您可以使用

json.dumps(list_df)
将其写入文件,这会将您的字典列表转换为有效的 json 表示形式。

import json
with open("my_file", 'w') as outfile:
    outfile.write(json.dumps(list_df))

编辑:正如 DaveR 所评论的那样,数据帧不可序列化。您可以将它们转换为字典,然后将列表转储为 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()
方法,也许也看看那些。


2
投票

要将 DataFrame 列表导出到单个 json 文件,您应该将列表转换为 DataFrame,然后使用

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 字符串并将其导出到文件。


0
投票

在 python3 中,您可以转换给定列表中的每个 pd.DataFrame 对象

json_dfs = json.dumps([df.to_json() for df in [df1, df2]])

要将其转换回来,只需使用

dfs = [pd.read_json(df_js) for df_js in json.loads(json_dfs)]
© www.soinside.com 2019 - 2024. All rights reserved.