У меня есть разные рамки данных панд, которые я помещаю в список. Я хочу сохранить этот список в формате 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 имеют разное количество столбцов!

2
DaveR 28 Май 2017 в 11:55

2 ответа

Лучший ответ

Не знаю 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, кадры данных не сериализуемы. Вы можете преобразовать их в 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(), возможно, взгляните и на них.

2
olisch 28 Май 2017 в 13:57

Чтобы экспортировать список DataFrames в один файл 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 и экспортировать его в файл.

1
James Apple 29 Май 2020 в 18:26