亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何通過聚合從組中刪除 Pandas 中的嵌套列名?

如何通過聚合從組中刪除 Pandas 中的嵌套列名?

楊__羊羊 2021-07-08 13:11:53
我有以下代碼,它使用 group byEmployee_id和聚合 with查找每個員工的總銷售額和唯一銷售額Customer_id。Sales.groupby('Employee_id').agg({    'Customer_id': [        ('total_sales', 'count'),        ('unique_sales', 'nunique')]})重要的是要知道我也將與其他列執行聚合,但到目前為止,這就是我寫的全部內容。因此,如果您有建議的解決方案,請考慮一下,以防萬一。雖然這在計算每位員工的總銷售額和唯一銷售額并創建兩列方面完全符合我的要求,但它會創建嵌套的列名稱。所以列名看起來像 [('Customer_id', 'total_sales'), ('Customer_id', 'unique_sales')],這是我不想要的。有什么方法可以輕松擺脫嵌套部分以僅包含 ['total_sales', 'unique_sales'],或者是在完成所有操作后重命名列的最簡單方法?
查看完整描述

1 回答

?
蝴蝶刀刀

TA貢獻1801條經驗 獲得超8個贊

您可以簡單地重命名列:


import numpy as np

import pandas as pd

np.random.seed(2018)


df = pd.DataFrame(np.random.randint(10, size=(100, 3)), columns=['A','B','C'])

result = df.groupby('A').agg({'B': [('D','count'),('E','nunique')],

                              'C': [('F','first'),('G','max')]})

result.columns = result.columns.get_level_values(1)

print(result)

或者,您可以保存groupby對象,并用于grouped[col].agg(...) 生成子數據幀,然后可以將其pd.concat組合在一起:


import numpy as np

import pandas as pd

np.random.seed(2018)

df = pd.DataFrame(np.random.randint(10, size=(100, 3)), columns=['A','B','C'])

grouped = df.groupby('A')

result = pd.concat([grouped['B'].agg([('D','count'),('E','nunique')]),

                    grouped['C'].agg([('F','first'),('G','max')])], axis=1)

print(result)

兩個代碼片段都產生以下結果(盡管列的順序可能不同):


    D  E  F  G

A             

0  18  8  8  9

1  12  8  6  6

2  14  8  0  8

3  10  9  8  9

4   7  6  3  5

5   8  5  6  7

6   9  7  9  9

7   8  6  4  7

8   8  7  2  9

9   6  5  7  9

總的來說,我認為事后重命名列是最簡單、更易讀的選擇。


查看完整回答
反對 回復 2021-07-13
  • 1 回答
  • 0 關注
  • 297 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號