从不同的datafram分配索引

2024-05-08 18:31:43 发布

您现在位置:Python中文网/ 问答频道 /正文

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


Tags: 数据indexabvarmatch公司someloc
1条回答
网友
1楼 · 发布于 2024-05-08 18:31:43

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

相关问题 更多 >