我正在尋找根據客戶對熊貓資料框進行分組,根據數量對其進行排序,并回傳包含數量第二高值的整行。
我有這樣的事情:
customer item quantity
0 A p 5
1 A p 8
2 A q 9
3 A q 2
4 B p 3
5 B p 6
我能夠回傳一個包含最大數量行的資料框。我用了:
idx=df.groupby(by='customer')['quantity'].idxmax()
df_max=df.loc[idx,]
這回傳了以下資料框:
customer item quantity
2 A q 9
5 B p 6
但是,我還需要一個數量第二多的 Dataframe,我很難過。
我想要一個回傳的資料框,如下所示:
customer item quantity
1 A p 8
4 B p 3
謝謝!
uj5u.com熱心網友回復:
您可以嘗試pandas.core.groupby.GroupBy.nth從已排序的資料框中獲取第 n 行,注意索引從 0 開始。
out = (df.sort_values('quantity', ascending=False)
.groupby('customer', as_index=False).nth(1))
print(out)
customer item quantity
1 A p 8
4 B p 3
uj5u.com熱心網友回復:
df.groupby("customer").agg({'quantity': list}).apply(lambda x: sorted(x.quantity)[-2], axis=1)
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/468914.html
上一篇:替換列資料框中的字母數字值
