Как сохранить список информационных фреймов, создавая их итеративно? - PullRequest
1 голос
/ 19 сентября 2019

У меня много папок, из которых я генерирую разные фреймы данных в соответствии с некоторыми критериями.В результате цикл создает один кадр данных на каждую итерацию.Я хочу сохранить их все в разных файлах .plk.Я просто использую его:

df.to_pickle('df')

Но он сохраняет только последний.Мне нужно что-то вроде:

df.to_pickle(df[i].plk')

Где i для каждой итерации.

Ответы [ 3 ]

1 голос
/ 19 сентября 2019

Вот как мне удается: сначала создайте пустой список, в который вы будете добавлять каждый созданный вами фрейм данных:

df_appender = []

Предположим, что я генерирую список ids, который содержит уникальные значения, которые будут использоваться для итерации.и сгенерируйте каждый желаемый фрейм данных:

ids = ['A','B','C','D','E']

Вот где происходит цикл и какую логику вы хотите применить для создания новых фреймов данных и добавления их:

for i in range(len(ids)):
    dfx = df[df['id'] == ids[i]] 
    dfx = dfx.sort_values(['day'],ascending=[True])
    dfx = dfx.drop_duplicates(['day'],keep='last')
    df_appender.append(dfx)
    print(i/len(ids))

Теперь у вас естьсписок с фреймами данных для каждой итерации, наконец, если вы хотите объединить их в один большой фрейм данных, вы можете сделать:

final_df = pd.concat(df_appender,ignore_index=True)
0 голосов
/ 19 сентября 2019

В качестве вклада я сделал это, и это сработало:

df[i].to_pickle(str(i)+'some_name.plk') 
0 голосов
/ 19 сентября 2019

просто замените эту строку

df.to_pickle(df[i].plk')

на

df.to_pickle(f"df_{i}".plk)

, она сохранит ваши файлы на df_1.plk, df_2.plk, df_3.plk и т. Д.

...