第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

Groupby 和僅選定的列

Groupby 和僅選定的列

慕村225694 2021-09-11 15:18:28
在這里我讀了一個(gè)文件“userdata.xlsx”:ID  Debt    Email   Age User1   7.5 john@email.com  16  John2   15  john@email.com  15  John3   22  john@email.com  15  John4   30  david@email.com 22  David5   33  david@email.com 22  David6   51  fred@email.com  61  Fred7   11  fred@email.com  25  Fred8   24  eric@email.com  19  Eric9   68  terry@email.com 55  Terry10  335 terry@email.com 55  Terry在這里,我按用戶分組并為每個(gè)用戶創(chuàng)建一個(gè)電子表格并將其輸出為自己的 .xlsx 文件,如下所示:ID  Debt    Email   Age User1   7.5 john@email.com  16  John2   15  john@email.com  15  John這是整個(gè)代碼:    #!/usr/bin/env python3    import pandas as pd    import numpy as np    import matplotlib.pyplot as plt    import xlrd    df = pd.read_excel('userdata.xlsx')    grp = df.groupby('User')    for group in grp.groups:        grouptofile = (grp.get_group(group))        print(grouptofile)        print(group)        grouptofile.to_excel('%s.xlsx' % group , sheet_name='sheet1', index=False)現(xiàn)在我只想保存選定的列來(lái)為每個(gè)用戶保存。假設(shè)我只希望選擇“ID”和“電子郵件”列。我學(xué)會(huì)了如何只選擇某些列,如下所示:selected = df[['ID','Email']]我現(xiàn)在認(rèn)為在這里添加 ID 和電子郵件是有意義的。grp = df.groupby('User')添加了“ID”和“電子郵件”grp = df[['ID', 'Email']].groupby('User')甚至可以組合 groupby 和 select 列嗎?#!/usr/bin/env python3    import pandas as pd    import numpy as np    import matplotlib.pyplot as plt    import xlrd    df = pd.read_excel('userdata.xlsx')    grp = df[['ID', 'Email']].groupby('User')    for group in grp.groups:        grouptofile = (grp.get_group(group))        print(grouptofile)        print(group)        grouptofile.to_excel('%s.xlsx' % group , sheet_name='sheet1', index=False)
查看完整描述

2 回答

?
不負(fù)相思意

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)


查看完整回答
反對(duì) 回復(fù) 2021-09-11
?
MMMHUHU

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')]


查看完整回答
反對(duì) 回復(fù) 2021-09-11
  • 2 回答
  • 0 關(guān)注
  • 158 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)