Pandas 比较两个数据帧的两列

Pandas 比较两个数据帧的两列,pandas,select,dataframe,merge,lookup,Pandas,Select,Dataframe,Merge,Lookup,我有两个数据帧,如: df_out: a b c d 1 1 2 1 2 1 2 3 3 1 3 5 df_fin: a e f g 1 0 2 1 2 5 2 3 3 1 3 5 5 2 4 6 7 3 2 5 我希望得到如下结果: a b c d a e f g 1 1

我有两个数据帧,如:

df_out:
a   b     c   d
1   1     2    1
2   1     2    3
3   1     3    5

df_fin:
a   e     f   g
1   0     2    1
2   5     2    3
3   1     3    5
5   2     4     6
7   3     2     5
我希望得到如下结果:

a   b      c   d  a   e   f   g 
1   1     2    1  1   0   2   1
2   1     2    3  2   5   2   3
3   1     3    5  3   1   3   5 
换句话说,我有两个不同的数据帧,它们在一列(a)中是公共的,我希望两个数据帧比较这两列(df_fin.a和df_out.a),并从df_fin中选择在列a中具有相同值的行,并创建新的数据帧,该数据帧从df_fin中选择行并从df_out中添加列

我认为您需要左连接:

df = pd.merge(df_out, df_fin, on='a', how='left')
print (df)
   a  b  c  d  e  f  g
0  1  1  2  1  0  2  1
1  2  1  2  3  5  2  3
2  3  1  3  5  1  3  5
编辑:


你能帮助我知道我应该如何比较pandas中两个data framespandas\src\join.pyx的(a)列吗?\u join.left\u outer\u join(pandas\src\join.c:30181)()MemoryError:df\u fin中的行数是741000,df\u out中的行数是38000,这会导致内存错误吗?是的,没错。非常大的数据帧。那么我应该怎么做呢?
a
的值在
df_out
中是否唯一(其他列必须从中添加)?@开源否,在(a)列中有相同的值,但我也需要复制行。
df1 = df_fin[df_fin['a'].isin(df_out['a'])]
df2 = df_out.join(df1.set_index('a'), on='a')
print (df2)
   a  b  c  d  e  f  g
0  1  1  2  1  0  2  1
1  2  1  2  3  5  2  3
2  3  1  3  5  1  3  5