我正在尝试将一个df列的值与另一个df列的值映射。
首个df包含足球比赛结果:
$two = t
第二个df包含团队,并且只有一列:
#akabradabra
$one = 'one'
#biblibablibo
$two = 't'
$three = 'three' #ok threer
最终结果是第一个具有匹配项但具有团队名称而不是“ HomeTeam”和“ AwayTeam”中数字的df。第一个df中的数字表示第二个df的索引。
我尝试过“ .replace”:
Date|HomeTeam|AwayTeam
2009-08-15|0|2
2009-08-15|18|15
2009-08-15|20|10
它确实替换了某些项目(约80%)的值,但忽略了其他项目。我找不到替换其他值的方法。
请让我知道我做错了什么以及如何解决。谢谢!
答案 0 :(得分:0)
也许尝试使用applymap
:
df[['HomeTeam', 'AwayTeam']] = df[['HomeTeam', 'AwayTeam']].applymap(lambda x: teams['TeamName'].tolist()[x])
现在:
print(df)
输出将达到预期的水平。
答案 1 :(得分:0)
我假设teams
也是一个DataFrame,例如:
teams = pd.DataFrame(data=[['Team_0'], ['Team_1'], ['Team_2'], ['Team_3'],
['Team_4'], ['Team_5'], ['Team_6'], ['Team_7'], ['Team_8'],
['Team_9']], columns=['TeamName'])
,但是您未能在提供的样本中包含索引(实际上,在 两个样本)。
那我的主张是:
matches.set_index('Date')\
.applymap(lambda id: teams.loc[id, 'TeamName'])\
.reset_index()