我有两个数据帧。我想保留数据集B中的观察也在数据集A中的所有情况,但是使用数据集A中的索引。
DFA:
Index some_var some_var2 match_var
AB x y 12
AC x y 13
AD x y 14
DFB:
Index Match_var some_var3 some_var4
1 12 z w
2 22 z w
3 14 z w
期望的结果:
Index some_var3 some_var4 match_var
AB z w 12
AD z w 14
问题是实际数据太大而无法执行合并并丢弃不需要的列和不匹配的案例。内存使用量超过100GB RAM。
我想使用dfC=dfB.loc[(dfB['Match_var'].isin(dfA['Match_var']))]
但是,这使得我保持dfB的索引,而我需要来自dfA的那个。
dfA.reset_index(inplace=True)
idx = dfB.loc[(dfB['Match_var'].isin(dfA['Match_var']))]
dfB.loc[idx, 'indexvar'] = dfA['Unnamed']
dfB.set_index(['indexvar'],inplace=True)
由于某种原因也不起作用。代码似乎将dfA中的索引分配给新数据框中的错误观察
答案 0 :(得分:0)
IIUC
pd.concat([dfA.set_index('match_var'),dfB.set_index('Match_var')],join ='inner',axis=1)
Out[782]:
Index some_var some_var2 Index some_var3 some_var4
12 AB x y 1 z w
14 AD x y 3 z w
为了获得你的输出
pd.concat([dfA.set_index('match_var')[['Index']],dfB.set_index('Match_var')[['some_var3','some_var4']]],join ='inner',axis=1).reset_index()
Out[788]:
index Index some_var3 some_var4
0 12 AB z w
1 14 AD z w