根据另一列从两个数据帧中选择列

2024-09-29 21:33:22 发布

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

我有两个数据帧,其中一个包含有关足球运动员的一般信息,第二个数据帧包含其他信息,如每个球员的比赛获胜情况。他们都有“他们两个”的id。然而,它们的长度不一样。在

我要做的是创建一个新的dataframe,它包含两列:第一个dataframe中的“x”列和第二个dataframe中的“y”,仅当“id”列在两个数据帧中包含相同的值时。因此,我可以匹配属于同一个人的“x”和“y”列。在

我试着用concat函数来做:

pd.concat([firstdataframe['x'], seconddataframe['y']], axis=1, keys=['x', 'y'])

但我不知道如何在两个数据帧中应用“id”相等的条件。在


Tags: 数据函数信息iddataframe情况keyspd
1条回答
网友
1楼 · 发布于 2024-09-29 21:33:22

似乎您需要使用默认的^{}连接,inner连接,id列中的每个值都必须是唯一的:

df = pd.merge(df1[['id','x']], df2[['id','y']], on='id')

样品:

^{pr2}$

使用^{}的解决方案是可能的,但有点复杂,因为需要使用innerjoin连接索引:

df = pd.concat([df1.set_index('id')['x'], 
                df2.set_index('id')['y']], axis=1, join='inner')
       .reset_index()
print (df)
   id  x  y
0   1  4  7
1   2  3  0

编辑:

如果id不唯一,则重复项创建所有组合,并展开输出dataframe

df1 = pd.DataFrame({'id':[1,2,3],'x':[4,3,8]})
print (df1)
   id  x
0   1  4
1   2  3
2   3  8

df2 = pd.DataFrame({'id':[1,2,1,1],'y':[7,0,4,2]})
print (df2)
   id  y
0   1  7
1   2  0
2   1  4
3   1  2

df = pd.merge(df1[['id','x']], df2[['id','y']], on='id')
print (df)
   id  x  y
0   1  4  7
1   1  4  4
2   1  4  2
3   2  3  0

相关问题 更多 >

    热门问题