从不同的数据帧分配索引

时间:2018-02-16 22:08:43

标签: python pandas

我有两个数据帧。我想保留数据集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中的索引分配给新数据框中的错误观察

1 个答案:

答案 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
相关问题