Есть ли способ не жестко кодировать количество кадров данных?
Да, есть. Используйте словарь или список. Использование dict
:
dfs = {i: x for i, (_, x) in enumerate(df.groupby('column_of_interest'), 1)}
Затем получите доступ к своим фреймам данных через dfs[1]
, dfs[2]
и т. Д.
В качестве альтернативы, используя list
:
dfs = [x for _, x in df.groupby('column_of_interest')]
Затем используйте dfs[0]
, dfs[1]
и т. Д.
Если вам не нужно хранить ваших фрагментов данных, просто итерируйте объект groupby
и используйте to_csv
. Это удобно для f-строк ( PEP 498 , Python 3.6 +):
for idx, (value, x) in enumerate(df.groupby('column_of_interest'), 1):
x.to_csv(f'slice_{value}.csv') # include value in filename
x.to_csv(f'slice_{idx}.csv') # include numeric index in filename