Python Pandas - 使用另一个值更新数据框列

时间:2017-10-09 13:18:30

标签: python pandas dataframe

我正在努力改进Python并决定对我的一个激情做一些分析。摔角!在这种情况下,日本摔跤!

基本上我正在尝试从另一个数据帧更新一个数据帧中的值。这是我的第一个数据框架

|   | Wrestler          | Matches | DMR |
| 0 | TETSUYA NAITO     | 9       | 0   |
| 1 | HIROSHI TANAHASHI | 9       | 0   |
| 2 | BAD LUCK FALE     | 9       | 0   |
| 3 | KOTA IBUSHI       | 9       | 0   |
| 4 | ZACK SABRE JR.    | 9       | 0   |
| 5 | HIROOKI GOTO      | 9       | 0   |
| 6 | TOMOHIRO ISHII    | 9       | 0   |
| 7 | TOGI MAKABE       | 9       | 0   |
| 8 | YOSHI-HASHI       | 9       | 0   |
| 9 | YUJI NAGATA       | 9       | 0   |

我想要更新的专栏是来自我输入的一些数据生成的另一个数据框的DMR *(Dave Meltzer Ratings)*:

| Wrestler          | DMR      |
| BAD LUCK FALE     | 3.166667 |
| HIROOKI GOTO      | 3.694444 |
| HIROSHI TANAHASHI | 4.111111 |
| KOTA IBUSHI       | 4.222222 |
| TETSUYA NAITO     | 4        |
| TOGI MAKABE       | 3.611111 |
| TOMOHIRO ISHII    | 4.25     |
| YOSHI-HASHI       | 3.638889 |
| YUJI NAGATA       | 4.138889 |
| ZACK SABRE JR.    | 3.611111 |

我觉得这很简单但我找不到任何可以解释如何做的事情。对此的任何帮助将不胜感激。

谢谢, 单

2 个答案:

答案 0 :(得分:1)

Series使用map

df1['DMR'] = df1['Wrestler'].map(df2.set_index('Wrestler')['DMR'])

mergeleft joindrop删除列:

df1 = pd.merge(df1.drop('DMR', axis=1), df2, how='left')
print (df1)
            Wrestler  Matches       DMR
0      TETSUYA NAITO        9  4.000000
1  HIROSHI TANAHASHI        9  4.111111
2      BAD LUCK FALE        9  3.166667
3        KOTA IBUSHI        9  4.222222
4     ZACK SABRE JR.        9  3.611111
5       HIROOKI GOTO        9  3.694444
6     TOMOHIRO ISHII        9  4.250000
7        TOGI MAKABE        9  3.611111
8        YOSHI-HASHI        9  3.638889
9        YUJI NAGATA        9  4.138889

注意:

Wrestlerdf2列中的值必须是唯一的。

答案 1 :(得分:0)

所以我假设您的第一个数据帧称为df1,而您的第二个数据帧称为df2。然后这将工作:

df1 = df1.drop('DMR', 1)
df = merge(df1, df2, on = 'Wrestler')

从第一个数据框中删除DMR,然后将它们合并到Wrestler列上。