与dataframes python相交,保留一个dataframe列

与dataframes python相交,保留一个dataframe列,python,sql,dataframe,inner-join,Python,Sql,Dataframe,Inner Join,我想连接2个数据帧,这样结果将是键列上两个数据集的交集。 通过这样做: result = pd.merge(df1,df2,on='key', how='inner') 我将得到我所需要的,但有额外的df2列。我只想要结果中的df1列。(我不想以后删除它们) 有什么想法吗 谢谢,这里有一个通用解决方案,可用于一列和多列键(连接): 设置: In [28]: a = pd.DataFrame({'a':[1,2,3,4], 'b':[10,20,30,40], 'c':list('abcd')}

我想连接2个数据帧,这样结果将是键列上两个数据集的交集。 通过这样做:

result = pd.merge(df1,df2,on='key', how='inner')
我将得到我所需要的,但有额外的df2列。我只想要结果中的df1列。(我不想以后删除它们)

有什么想法吗


谢谢,

这里有一个通用解决方案,可用于一列和多列键(连接):

设置:

In [28]: a = pd.DataFrame({'a':[1,2,3,4], 'b':[10,20,30,40], 'c':list('abcd')})

In [29]: b = pd.DataFrame({'a':[3,4,5,6], 'b':[30,41,51,61], 'c':list('efgh')})

In [30]: a
Out[30]:
   a   b  c
0  1  10  a
1  2  20  b
2  3  30  c
3  4  40  d

In [31]: b
Out[31]:
   a   b  c
0  3  30  e
1  4  41  f
2  5  51  g
3  6  61  h
多个连接键:

In [32]: join_cols = ['a','b']

In [33]: a.merge(b[join_cols], on=join_cols)
Out[33]:
   a   b  c
0  3  30  c
单连接键:

In [34]: join_cols = ['a']

In [35]: a.merge(b[join_cols], on=join_cols)
Out[35]:
   a   b  c
0  3  30  c
1  4  40  d

那你就不想合并了。为什么不简单地
df1=df1[df1[“key”].isin(set(df2[“key”])]]
?我不是指多个列连接,而是指从a,b中选择a.*,其中a.key=b.key。我只想选择a的列,而不是b的列