替换数据框中的多个名称

时间:2018-07-16 18:05:04

标签: python pandas dataframe

我是python和数据科学的初学者。我正在学习熊猫。我有一个数据框,我想替换其中的几个值。我设法用.str.contains找到了一个基本代码(这非常有用),但是必须替换的值越多,我拥有的代码行就越多。看一下:

import pandas as pd
df = pd.DataFrame({'name': ['Bob', 'Jane', 'Alice'], 
                   'sport': ['tennis', 'football', 'basketball']})

所以:

df
[Out] : 
    name    sport
0   Bob     tennis
1   Jane    football
2   Alice   basketball

这是我非常基本的代码:

df.loc[df['sport'].str.contains('nis'), 'sport'] = 'T'
df.loc[df['sport'].str.contains('foo'), 'sport'] = 'F'

[Out] :
    name    sport
0   Bob     T
1   Jane    F
2   Alice   basketball

您可以轻松地想象,如果我有100行并且想要更改许多术语,则需要很多代码行。 请问如何使用更清晰的代码优化程序? 非常感谢你。

1 个答案:

答案 0 :(得分:0)

正如布拉德·所罗门(Brad Solomon)所说,您可以创建所需替换物品的字典。然后,使用python中的for循环进行替换;例如:

mapper = {'nis':'T', 'foo': 'F'}
k, v in mapper.items():
     df.loc[df['sport'].str.contains(k), 'sport'] = v

请注意,Pandas的方法会自动排除丢失/ NA值。有关更多信息,请参见https://pandas.pydata.org/pandas-docs/stable/text.html