我有一個不平衡的資料面板,學生可以在每個時期獲得一定級別/型別的獎學金:
頭(df)
ID student_period scholarship
4567 1 scholarship_level_1
4567 2 scholarship_level_2
4567 3 scholarship_level_2
4567 4 scholarship_level_3
5478 4 scholarship_level_3
5478 5 scholarship_level_3
6758 7 scholarship_level_1
6758 8 scholarship_level_2
6758 9 scholarship_level_2
基本上,我想創建一個新變數來繪制此面板中每個學生 ID 的獎學金級別的統計模式。像這樣的東西:
頭(df1)
ID student_period scholarship scholarship_mode
4567 1 scholarship_level_1 scholarship_level_2
4567 2 scholarship_level_2 scholarship_level_2
4567 3 scholarship_level_2 scholarship_level_2
4567 4 scholarship_level_3 scholarship_level_2
5478 4 scholarship_level_3 scholarship_level_3
5478 5 scholarship_level_3 scholarship_level_3
6758 7 scholarship_level_1 scholarship_level_2
6758 8 scholarship_level_2 scholarship_level_2
6758 9 scholarship_level_2 scholarship_level_2
有任何想法嗎?
uj5u.com熱心網友回復:
您可以使用groupby transform和value_counts:
df['scholarship_mode'] = (df.groupby('ID')['scholarship']
.transform(lambda x: x.value_counts().index[0]))
或mode:
df['scholarship_mode'] = (df.groupby('ID')['scholarship']
.transform(lambda x: x.mode().iloc[0]))
輸出:
ID student_period scholarship scholarship_mode
0 4567 1 scholarship_level_1 scholarship_level_2
1 4567 2 scholarship_level_2 scholarship_level_2
2 4567 3 scholarship_level_2 scholarship_level_2
3 4567 4 scholarship_level_3 scholarship_level_2
4 5478 4 scholarship_level_3 scholarship_level_3
5 5478 5 scholarship_level_3 scholarship_level_3
6 6758 7 scholarship_level_1 scholarship_level_2
7 6758 8 scholarship_level_2 scholarship_level_2
8 6758 9 scholarship_level_2 scholarship_level_2
注意。請注意mode/value_counts可以有聯系,在這種情況下,只會使用一個值。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/453071.html
