【问题标题】:Adding a column based on another dataframe when merging is not possible无法合并时添加基于另一个数据框的列
【发布时间】:2022-01-12 02:40:23
【问题描述】:

我的第一个数据框(nameobject 可能出现多次):

df_1=
     name      object     number1      number2 
0      n1          o1         0.0          1.0
1      n1          o2         1.0          1.0
2      n2          o1         0.0          1.0
3      n3          o3         1.0          0.0
...

我的第二个数据帧可能不包含出现在第一个数据帧中的所有objects

df_2=
     value1     value2      number3      object   
0     90.10      40.15          Yes          o1        
1     80.30      92.16           No          o3        
2     20.57      93.69           No          o4        
3     40.60      94.32          Yes          o5  
...    

我想将number3 列附加到第一个数据帧,其中Yes 转换为1.0No 转换为0.0,但忽略我们没有任何信息的行关于object。所以它会是:

     name      object     number1      number2     number3
0      n1          o1         0.0          1.0         1.0
1      n2          o1         0.0          1.0         1.0
2      n3          o3         1.0          0.0         0.0
...

对于转换,我会做:

df_2.number3.replace(to_replace=['No', 'Yes'], value=[0.0, 1.1])

但是我不能只在object 上使用merge,因为它们并不相同。 是否可以在df_2 中的objects 中搜索number3,追加并删除其余行?

【问题讨论】:

  • 您要进行内连接还是左连接?

标签: python pandas dataframe merge


【解决方案1】:

您似乎只想在 object 列上进行联接/合并:

df1.merge(df2,on=['object']).replace(to_replace={'number3':['No', 'Yes']}, value={'number3':[0.0, 1.0]})```

【讨论】:

  • 谢谢,没想到这么简单!我只是希望我不需要的列(value1value2)也可以被自动忽略,因为实际上还有更多。在这种情况下,我只需将 df_2 减少到必要的列,然后合并。
  • 不客气。您可以通过 df2[cols] 从 df2 中选择列的子集,其中 cols 是列名列表
猜你喜欢
  • 2018-08-04
  • 2022-12-01
  • 1970-01-01
  • 2020-12-20
  • 1970-01-01
  • 2018-01-30
  • 2021-12-16
  • 2021-08-25
  • 1970-01-01
相关资源
最近更新 更多