gpt4 book ai didi

python - 将元素列表映射到 Pandas 中的元素类别?

转载 作者:太空宇宙 更新时间:2023-11-04 02:30:56 24 4
gpt4 key购买 nike

我一直在谷歌上搜索很多,但我仍然找不到快速的方法。假设我的 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”和那些足球运动员的名字替换到一个类(class)中,而不是一个一个地替换,因为我有一个很长的专栏。

最佳答案

您需要创建一个映射表类型的玩家到玩家列表。

然后您可以使用面向数据的包(例如 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

关于python - 将元素列表映射到 Pandas 中的元素类别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49194895/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com