与dataframes python相交,保留一个dataframe列
我想连接2个数据帧,这样结果将是键列上两个数据集的交集。 通过这样做:与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')}
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的列