我是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行并且想要更改许多术语,则需要很多代码行。 请问如何使用更清晰的代码优化程序? 非常感谢你。
答案 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。