我可以檢查一下有什么區別嗎
df[['column1', 'column2']].groupby('column1').agg(['mean', 'count'])
和
df[['column1', 'column2']].groupby('column1').agg({'column2': 'mean', 'column2': 'count'})
在第一個示例中,mean和count被執行,column2而不是groupby。
在第二個例子中,同樣的邏輯,但我column2在agg.
為什么我看不到兩者的相同結果?
uj5u.com熱心網友回復:
TLDR
第二條陳述句的問題必須由于覆寫列。
至少有三種方法可以做到這一點。
首先讓我們構建一個測驗資料集:
import pandas as pd
from seaborn import load_dataset
df_tips = load_dataset('tips')
df_tips.head()
陳述 1:與您的第一個 wy 相同
df_tips[['sex','size']].groupby(['sex']).agg(['mean','count'])
輸出:
size
mean count
sex
Male 2.630573 157
Female 2.459770 87
具有多索引列標題大小和 level=1 兩個聚合的資料框。
陳述句 2:在字典中使用“大小”的聚合串列
df_tips[['sex','size']].groupby(['sex']).agg({'size':['mean','count']})
輸出(同上)
size
mean count
sex
Male 2.630573 157
Female 2.459770 87
陳述句 3:使用命名聚合
df_tips[['sex','size']].groupby(['sex']).agg(mean_size=('size','mean'),count_size=('size','count'))
輸出:
mean_size count_size
sex
Male 2.630573 157
Female 2.459770 87
這會給出一個帶有您自己命名的“扁平”列標題的資料框,但是該名稱不得包含空格或特殊字符。
不正確的方法是你的第二種方法
df_tips[['sex','size']].groupby(['sex']).agg({'size':'mean','size':'count'})
輸出:
size
sex
Male 157
Female 87
What is happening here is that you are getting two columns one for each aggregations but the column header is the same 'size', therefore the first iteration is getting overwritten with the second 'count' in this case.
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/434038.html
標籤:Python 熊猫 数据框 熊猫-groupby
上一篇:根據每個組的過去記錄查找cumcount和aggfunc
下一篇:如何將.assign用于列中的值
