Python 为列中的每个因子级别创建新数据框
一列中有50多个不同的级别,每个级别都需要分解为自己的数据框架并写入文件(excel或csv) 我认为这是一个可能的解决方案: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
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