2 回答

TA貢獻1777條經驗 獲得超10個贊
我認為您需要在子集中指定列:
cols = ['ID', 'Email']
for i, group in df.groupby('User'):
group[cols].to_excel('{}.xlsx'.format(i), sheet_name='sheet1', index=False)
如果得到KeyError: 'User'它意味著你想要選擇不存在的列。
因此,如果選擇列ID和Email,則鏈接的 groupby 找不到User列并引發錯誤:
print (df[['ID', 'Email']])
ID Email
9 10 [email protected]
所以有必要選擇列也在 groupby 中使用:
for i, group in df[['ID', 'Email', 'User']].groupby('User'):
group.to_excel('{}.xlsx'.format(i), sheet_name='sheet1', index=False)
或者在寫入文件之前選擇列,就像在第一個解決方案中一樣。
for i, group in df[['ID', 'Email', 'User']].groupby('User'):
group[cols].to_excel('{}.xlsx'.format(i), sheet_name='sheet1', index=False)

TA貢獻1834條經驗 獲得超8個贊
這是可能的......但不是你這樣做的方式。
您正在有效地刪除除兩列之外的所有列,然后嘗試按不再存在的第三列進行分組。相反,您需要在選擇列之前進行分組(盡管我不知道分組是否numpy
是一個變異操作,因此您可能需要先進行復制)。
(可能次優)示例:
grp = df[('ID', 'Email', 'User')].groupby('User')[('ID', 'Email')]
添加回答
舉報