Groupby for循环按组导出单独的文件

时间:2019-06-06 17:28:16

标签: pandas dataframe pandas-groupby

我试图按“状态”列对数据框进行分组,对每个组进行计算,然后导出到excel,并为各个状态组命名每个文件。如果我打印组,则它们看起来正确,但是我无法获取文件以正确显示组数据。当前,它使用正确的文件名创建单独的文件,但是每个文件都具有忽略组的完整数据集。 源数据在这里:https://docs.google.com/spreadsheets/d/1-wdmIz_-AILcBqzvpwAFGZfXqhq8oDRrYFVVdkjZ10o/edit?usp=sharing


df = pd.read_excel("ranker_test.xlsx", sheet_name='DATA')

grouped = df.groupby('state')

for group in grouped:
    df.to_excel('test files/ranking_{}.xlsx'.format(group[0]), index=False)

^这会创建正确命名的文件,但是每个文件都具有所有状态。


df = pd.read_excel("ranker_test.xlsx", sheet_name='DATA')

grouped = df.groupby('state')

for group in grouped:
    group.to_frame().to_excel('test files/ranking_{}.xlsx'.format(group[0]), index=False)

^尝试使用group.to_frame()。to_excel将其转换为数据框会导致以下错误:AttributeError:'tuple'对象没有属性'to_frame'

如何将组转换为数据帧以存储在每个文件中?

1 个答案:

答案 0 :(得分:1)

在解压缩分组值时,您似乎错过了一个参数。分组的值是具有以下格式(group_index,group_dataframe)的图册列表。因此,为了正确地对其进行迭代,您应该执行以下操作:

df = pd.read_excel("ranker_test.xlsx", sheet_name='DATA')

grouped = df.groupby('state')

for name, group in grouped:
    group.to_excel('test files/ranking_{}.xlsx'.format(name), index=False)

请注意for循环中的 name 参数