[英]Add new column to Dataframe by looking up values in Dictionary
我有一個Pandas數據框,其中包含每個錦標賽的運動成績,如下所示(簡化):
Tournament WinnerName LoserName
t1 A X
t1 B Y
t1 C Y
t2 A X
t2 B Y
t2 C Y
在字典中,我可以獲得有關每個錦標賽的玩家排名的信息:
Tournament Player Rank
t1 A 1
t1 B 7
t1 C 70
t2 A 11
t2 B 1
t2 C 100
現在,我想知道每場比賽的獲勝者在以下類別之一中排名的頻率:a)1到10之間,b)11到49之間,c)大於49。
因此結果可能如下所示:
Tournament WinnerName LoserName Group
t1 A X a
t1 B Y a
t1 C Y c
t2 A X b
t2 B Y a
t2 C Y c
或像這樣:
Tournament WinnerName LoserName GroupA GroupB GroupC
t1 A X 1 0 0
t1 B Y 1 0 0
t1 C Y 0 0 1
t2 A X 0 1 0
t2 B Y 1 0 0
t2 C Y 0 0 1
之后,我可以輕松地計算每列的出現次數。 但是目前,我只能達到兩個給定結果之一。 我知道它應該以某種方式apply
或transform
,但是不幸的是我沒有確切的想法。 也許有更好的解決方案來實現這一目標?
謝謝。
從排名(列)中,您可以剪切並獲取_dummies:
In [11]: r
Out[11]:
0 1
1 7
2 70
3 11
4 1
5 100
Name: Rank, dtype: int64
In [12]: pd.cut(r, [0, 10, 49, 100], include_lowest=True)
Out[12]:
0 [0, 10]
1 [0, 10]
2 (49, 100]
3 (10, 49]
4 [0, 10]
5 (49, 100]
Name: Rank, dtype: category
Categories (3, object): [[0, 10] < (10, 49] < (49, 100]]
In [13]: pd.get_dummies(pd.cut(r, [0, 10, 49, 100], include_lowest=True))
Out[13]:
[0, 10] (10, 49] (49, 100]
0 1 0 0
1 1 0 0
2 0 0 1
3 0 1 0
4 1 0 0
5 0 0 1
現在,您可以將它們與原始DataFrames一起使用/無論使用什么。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.