只将一个keycolumn复制到合并的DataFram中

2024-04-19 20:25:07 发布

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

考虑以下数据帧:

df1 = pd.DataFrame({'a': [0, 1, 2, 3], 'b': list('abcd')})
df2 = pd.DataFrame({'c': list('abcd'), 'd': 'Alex'})

在本例中,df1['b']和{}是键列。所以合并时:

^{pr2}$

当我只需要一个键时,结果数据帧中就有两个键列。我一直在使用:

df1.merge(df2, left_on='b', right_on='c').drop('c', axis='columns')

有没有办法只保留一个键列?在


Tags: 数据rightdataframeonmergeleftlistdrop
3条回答

或者使用一个set_indexleft_index=Trueright_on参数:

df1.set_index('b').merge(df2, left_index=True, right_on='c')

输出:

^{pr2}$

一种方法是将bc分别设置为帧的索引,并使用join后跟reset_index

df1.set_index('b').join(df2.set_index('c')).reset_index()

   b  a     d
0  a  0  Alex
1  b  1  Alex
2  c  2  Alex
3  d  3  Alex

这将比大型数据帧上的merge/drop方法快,主要是因为drop速度慢。@比尔的方法比我的建议快,@W-B&;PiRsquared的速度比其他建议快得多:

^{pr2}$

b和c的名字是一样的。至少对于合并操作。在

df1.rename({'b': 'c'}, axis=1).merge(df2)
   a  c     d
0  0  a  Alex
1  1  b  Alex
2  2  c  Alex
3  3  d  Alex

相关问题 更多 >