我一直在谷歌搜索,但我仍然找不到快速的方法。 假设我的csv文件中有一列:
1. C.Ronald
2. Conor McGregor
3. Lionel Messi
4. LeBron James
5. Derrick Rose
6. Tom Brady
7. ...
8. ...
依此类推,我想通过python将这些名称替换为以下三个类别:
1. Soccer player
2. MMA fighter
3. Soccer player
4. NBA player
5. NBA player
6. NFL plaer
7. ...
8. ...
我怎么能立刻将'C.Ronald','Lionel Messi'和那些足球运动员的名字替换成一个班级,但不是一个一个,因为我有一个很长的专栏。
答案 0 :(得分:2)
您需要创建一个映射表单类型的播放器列表。
然后,您可以使用面向数据的包(例如pandas
)通过字典为您执行映射:
from io import StringIO
import pandas as pd
mystr = StringIO("""C.Ronald
Conor McGregor
Lionel Messi
LeBron James
Derrick Rose
Tom Brady
""")
df = pd.read_csv(mystr, header=None, names=['Player'])
d = {'Soccer player': ['C.Ronald', 'Lionel Messi'],
'MMA fighter': ['Conor McGregor'],
'NBA player': ['LeBron James', 'Derrick Rose'],
'NFL player': ['Tom Brady']}
df['Category'] = df['Player'].map(lambda x: next((k for k, v in d.items() if x in v), None))
# Player Category
# 0 C.Ronald Soccer player
# 1 Conor McGregor MMA fighter
# 2 Lionel Messi Soccer player
# 3 LeBron James NBA player
# 4 Derrick Rose NBA player
# 5 Tom Brady NFL player
<强>解释强>
生成器表达式上的 next
返回下一次迭代;它在找到第一个实例时停止。如果你有一个多个类别的运动员,这只会成为一个问题。如果未找到匹配项,则仅返回参数None
。