Python 为列中的每个因子级别创建新数据框

Python 为列中的每个因子级别创建新数据框,python,pandas,pandas-groupby,pandas.excelwriter,Python,Pandas,Pandas Groupby,Pandas.excelwriter,一列中有50多个不同的级别,每个级别都需要分解为自己的数据框架并写入文件(excel或csv) 我认为这是一个可能的解决方案: df1, df2, df3, df4 = [x for _, x in df.groupby(df['column_of_interest'])] 但是有没有办法不硬编码数据帧的数量呢 有没有办法不硬编码数据帧的数量 是的,有。使用字典或列表。使用dict: dfs = {i: x for i, (_, x) in enumerate(df.groupby('colu

一列中有50多个不同的级别,每个级别都需要分解为自己的数据框架并写入文件(excel或csv)

我认为这是一个可能的解决方案:

df1, df2, df3, df4 = [x for _, x in df.groupby(df['column_of_interest'])]
但是有没有办法不硬编码数据帧的数量呢

有没有办法不硬编码数据帧的数量

是的,有。使用字典或列表。使用
dict

dfs = {i: x for i, (_, x) in enumerate(df.groupby('column_of_interest'), 1)}
然后通过
dfs[1]
dfs[2]
等访问数据帧

或者,使用
列表

dfs = [x for _, x in df.groupby('column_of_interest')]
然后使用dfs[0],
dfs[1]

如果不需要存储数据帧切片,只需迭代
groupby
对象并使用
来存储csv
。这对于f字符串(,Python 3.6+)很方便:


您可以直接保存数据帧

[df1.to_csv("coi_%s.csv"%val) for val, df1 in df.groupby(df['column_of_interest'])]
或者使用显式for循环

for val, df1 in df.groupby(df['column_of_interest']):
    #Write the df1 to csv or excel
    df1.to_csv("coi_%s.csv"%val)

一种方法是使用
本地人
但不推荐,我个人认为jpp的回答是这类请求的正确方法

variables = locals()
for key,value in df.groupby(df['column_of_interest']):
    variables["df{0}".format(key)]= value

这起作用了。我需要按列级别保存csv。非常感谢。
variables = locals()
for key,value in df.groupby(df['column_of_interest']):
    variables["df{0}".format(key)]= value