gpt4 book ai didi

python - 与 Pandas 的对应表

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

最近,我使用 pandas 来操作带有选举数据的 csv。在我的数据框中,我为某个地区的每个城市都有一个“获胜者”列。

它可以表示为:

       city         winner
0 city1 party1
1 city2 party3
2 city3 party1
3 city4 party2
4 city5 party1
...
5188 city5189 party3

事情是这样的:我想创建一个名为“coulour”的新列。我们的目标是根据“获胜者”的值(value),为每个城市提供独特的颜色。

为此,我可以使用 if/elif 语句,但我想知道是否可以使用对应表。例如,如果我一方面有巨大的 DataFrame,另一方面有这个小 DataFrame:

       winner       colour
0 party1 #000
1 party2 #fff
2 party3 #c0c0c0

如果“winner”的值在两个 DataFrame 中匹配,我可以使用 pandas 的一种功能来匹配显示“colour”的良好值吗?

我尝试过map()函数和get_loc(),但效果不太好。

最佳答案

您可以使用map由从 df2 创建的 Series:

print (df2.set_index('winner')['colour'])
winner
party1 #000
party2 #fff
party3 #c0c0c0
Name: colour, dtype: object

df1['new'] = df1.winner.map(df2.set_index('winner')['colour'])
print (df1)
city winner new
0 city1 party1 #000
1 city2 party3 #c0c0c0
2 city3 party1 #000
3 city4 party2 #fff
4 city5 party1 #000
5188 city5189 party3 #c0c0c0

另一个解决方案 merge (如果DataFrame中只有公共(public)列是winner,则可以省略on='winner'):

print (pd.merge(df1,df2, how='left'))
city winner colour
0 city1 party1 #000
1 city2 party3 #c0c0c0
2 city3 party1 #000
3 city4 party2 #fff
4 city5 party1 #000
5 city5189 party3 #c0c0c0

关于python - 与 Pandas 的对应表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40327006/

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