簡體   English   中英

通過在字典中查找值將新列添加到數據框

[英]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

之后,我可以輕松地計算每列的出現次數。 但是目前,我只能達到兩個給定結果之一。 我知道它應該以某種方式applytransform ,但是不幸的是我沒有確切的想法。 也許有更好的解決方案來實現這一目標?

謝謝。

從排名(列)中,您可以剪切並獲取_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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM