我试图按“状态”列对数据框进行分组,对每个组进行计算,然后导出到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'
如何将组转换为数据帧以存储在每个文件中?
答案 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 参数