我有一個df這種格式,我的目標是找到參加多個錦標賽的用戶,并最終將他們的“val”值設定為他們第一次出現的那個。最初,我想我需要groupby“游覽”,但后來它需要一些交叉點,但我不確定如何進行。或者,我可以這樣做,pd.crosstab(df.user, df.tour)但我也不知道如何進行。
df = pd.DataFrame(data = [['jim','1','1', 10],['john','1','1', 12], ['jack','2', '1', 14],['jim','2','1', 10],
['mel','3','2', 20],['jim','3','2', 10],['mat','4','2', 14],['nick','4','2', 20],
['tim','5','3', 16],['john','5','3', 10],['lin','6','3', 16],['mick','6','3', 20]],
columns = ['user', 'game', 'tour', 'val'])
uj5u.com熱心網友回復:
由于df已經按 排序tour,我們可以使用groupby first:
df['val'] = df.groupby('user')['val'].transform('first')
輸出:
user game tour val
0 jim 1 1 10
1 john 1 1 12
2 jack 2 1 14
3 jim 2 1 10
4 mel 3 2 20
5 jim 3 2 10
6 mat 4 2 14
7 nick 4 2 20
8 tim 5 3 16
9 john 5 3 12
10 lin 6 3 16
11 mick 6 3 20
uj5u.com熱心網友回復:
您可以groupby在“用戶”上過濾出只有 1 個元素的組,然后選擇第一個,如下所示:
df.groupby(['user']).filter(lambda g:len(g)>1).groupby('user').head(1)
輸出
user game tour val
0 jim 1 1 10
1 john 1 1 12
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/433557.html
標籤:Python 熊猫 数据框 熊猫-groupby
下一篇:按資料幀中的最大值和最小值過濾
