如何在合并两个数据帧后删除重复项?

2024-06-06 15:16:00 发布

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

我有两个数据帧

A= 
ID compponent weight
12  Cap        0.4
12  Pump       183
12  label      0.05
14  cap        0.6 

B=
ID compponent_B weight_B
12  Cap_B       0.7
12  Pump_B       189
12  label      0.05


当我根据ID作为键合并这两个数据帧时,我得到


ID component weight component_B  weight_B
12  Cap        0.4   Cap_B        0,7
12  Cap        0.4   Pump_B       189
12  Cap        0.4   label        0.05
12  Pump       183   Cap_B        0,7
12  Pump       183   Pump_B       189
14  Pump       183   label        0.05
...

我知道,如果我进行合并,我有一个ID来输入3行代码,生成9行代码,但我如何才能只保留3行代码而不丢失信息,如果我在组件上放置重复的代码,我将丢失有关组件B的信息。我想要类似的东西:


ID component weight  component_B  weight_B
12  Cap        0.4    Cap_B        0,7
12  Pump       183    Pump_B       189
12  labeL      0,05   label        0.05


有人知道怎么做吗


Tags: 数据代码信息id组件labelcomponentcap
1条回答
网友
1楼 · 发布于 2024-06-06 15:16:00

您可以创建一个每个ID为^{}的列,以便能够merge显示ID和此新列,如下所示:

dfm = dfA.assign(cc=dfA.groupby('ID').cumcount())\
         .merge(dfB.assign(cc=dfB.groupby('ID').cumcount()), 
                on=['ID', 'cc'], how='outer')
print (dfm)
   ID compponent  weight  cc compponent_B  weight_B
0  12        Cap    0.40   0        Cap_B      0.70
1  12       Pump  183.00   1       Pump_B    189.00
2  12      label    0.05   2        label      0.05
3  14        cap    0.60   0          NaN       NaN

相关问题 更多 >