我可以現在做熊貓以下,但我得到一個嚴峻的手指FutureWarning搖:Pandas Groupby:如何使用兩個lambda函數?
grpd = df.groupby("rank").agg({
"mean": np.mean, "meian": np.median, "min": np.min, "max": np.max,
"25th percentile": lambda x: np.percentile(x, 25),
"75th percentile": lambda x: np.percentile(x, 75)
})
下拋出一個錯誤,因爲我有兩個lambda函數:
percentile_25 = lambda x: np.percentile(x, 25)
percentile_75 = lambda x: np.percentile(x, 75)
df = diffs[["User Installs", "rank"]].dropna()
grpd = df.groupby("shopping_rank").agg([
np.mean, np.median, np.min, np.max,
percentile_25, percentile_75
])
此拋出:
SpecificationError: Function names must be unique, found multiple named <lambda>
我看起來能夠完成這項工作的唯一方法(不必忽視警告,我應該只是這樣做)是用精心製作的程序像下面
- SS定義我的DF與一個lambda函數(25個百分點),以及其他一切我需要(最小值,最大值等)
- 重命名的cols擺脫的多指標
- 與另一列我想(第75百分位)創建另一個DF,做另外一個分組,這個時候
- 重命名的cols再次(多指標感謝!)
- 加入回到原來的DF對指數
有什麼我在這裏失蹤?當然,有一種更好的方式可以做我認爲很常見的事情(使用兩個不能直接從numpy導入的聚合)。
的可能的複製[在一個數據幀作出若干操作一次(https://stackoverflow.com/questions/46812223/make-several-operations-in-a-dataframe-at-once) – Wen
函數是一個功能。 'lambda'表達式只是創建類型爲'function'的值的一種方法。 – chepner
@chepner對不起,如果我不清楚。我不在乎函數是如何定義的,lambda表達式似乎存在於這個確切的用例中,所以我有點困惑,爲什麼它不起作用。 – BenDundee