我有一个Pandas DataFrame,其中包含巴西大学的名称,但是有些东西我用短途或长途使用这些名称(例如,有时,里约热内卢联邦大学有时被标识为UFRJ)。DataFrame看起来像这样:
| college |
|----------------------------------------|
| Universidade Federal do Rio de Janeiro |
| UFRJ |
| Universidade de Sao Paulo |
| USP |
| Catholic University of Minas Gerais |
我还有另一本书,在这些单独的栏中分别列出了这些大学中某些(不是全部)大学的简称和长名。看起来像这样:
| long_name | short_name |
|----------------------------------------|------------|
| Universidade Federal do Rio de Janeiro | UFRJ |
| Universidade de Sao Paulo | USP |
我想要的是:用长名称替换所有短名称,因此在这种情况下,第一个数据帧会将college
列更改为此:
| college |
|----------------------------------------|
| Universidade Federal do Rio de Janeiro |
| Universidade Federal do Rio de Janeiro |
| Universidade de Sao Paulo |
| Universidade de Sao Paulo |
| Catholic University of Minas Gerais | <--- note: this one does not have a match, so it stays the same
有没有一种方法可以使用pandas和numpy(或任何其他库)来做到这一点?
使用Series.map
与第二更换DataFrame
,如果没有匹配得到遗漏值,所以补充Series.fillna
:
df1['college'] = (df1['college'].map(df2.set_index('short_name')['long_name'])
.fillna(df1['college']))
print (df1)
college
0 Universidade Federal do Rio de Janeiro
1 Universidade Federal do Rio de Janeiro
2 Universidade de Sao Paulo
3 Universidade de Sao Paulo
4 Catholic University of Minas Gerais
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句