Pandas对应表

2024-09-30 10:31:11 发布

您现在位置:Python中文网/ 问答频道 /正文

最近,我用pandas来操纵一个带有选举数据的csv。在我的数据框中,我为一个地区的每个城市都有一个“赢家”列。在

它可以表示为:

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

事情是这样的:我想创建一个新的列,名为“coulour”。我们的目标是每个城市都有一个独特的颜色,这取决于“赢家”的价值。在

为此,我可以使用if/elif语句,但我想知道是否可以使用对应表。例如,如果我一手拿着我的大数据框,另一只手拿着这个小数据框:

^{pr2}$

如果两个数据帧中“winner”的值匹配,我可以用pandas的一个选项来匹配显示“colour”的好值吗?在

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


Tags: csv数据citypandas地区winner赢家city1
1条回答
网友
1楼 · 发布于 2024-09-30 10:31:11

您可以使用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

如果^{}on='winner')中只有DataFrame中的公共列是winner,则可以省略另一个带有^{}on='winner')的解决方案:

^{pr2}$

相关问题 更多 >

    热门问题