我可以檢查一下有什么區別嗎
df[['column1','column2']].groupby('column1').agg(['mean','count'])
和
df[['column1','column2']].groupby('column1').agg({'column2' : 'mean','column2' :'count'})
在第一個示例中,對不在 groupby 中的 column2 執行均值和計數。
在第二個示例中,邏輯相同,但我在 agg 中明確提到了 column2。
但我看不到兩者的結果相同。
請協助澄清。
提前致謝。
菜鳥
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/gongcheng/433528.html
標籤:Python 熊猫 数据框 熊猫-groupby
