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