2 回答

TA貢獻(xiàn)1777條經(jīng)驗(yàn) 獲得超10個(gè)贊
我認(rèn)為您需要在子集中指定列:
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列并引發(fā)錯(cuò)誤:
print (df[['ID', 'Email']])
ID Email
0 1 john@email.com
1 2 john@email.com
2 3 john@email.com
3 4 david@email.com
4 5 david@email.com
5 6 fred@email.com
6 7 fred@email.com
7 8 eric@email.com
8 9 terry@email.com
9 10 terry@email.com
所以有必要選擇列也在 groupby 中使用:
for i, group in df[['ID', 'Email', 'User']].groupby('User'):
group.to_excel('{}.xlsx'.format(i), sheet_name='sheet1', index=False)
或者在寫入文件之前選擇列,就像在第一個(gè)解決方案中一樣。
for i, group in df[['ID', 'Email', 'User']].groupby('User'):
group[cols].to_excel('{}.xlsx'.format(i), sheet_name='sheet1', index=False)

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