如何有条件地合并数据框列

默沙东

我有两个dfs

df1

  Person   Dept      Date    Company   ID  Value
0   Faye  Sales  12/31/16  FB Co Inc  123     27
1   Faye  Sales   3/31/17    Unknown  123     34
2    Ray    Eng   3/31/18     xyz co  345     59
3    Ray     HR   6/30/18        XyZ  345     54
4    Jay     HR   9/30/18          A  678     53
5    Jim    Ops   9/30/16        New  999      8

df2

    Company     Symbol   ID
0    FB Inc         FB  123
1  XYZ Corp  No Symbol  345
2     A LLC         AA  678
3  EFG Corp        EFG  555

我想要:

  1. 合并 ID
  2. 格式整齐的Companyin替换in (但如果 in 没有匹配,也保留from df1df2Companydf1df2
  3. 添加Symboldf2df1

这样输出看起来像:

  Person   Dept      Date    Company    Symbol   ID  Value
0   Faye  Sales  12/31/16     FB Inc        FB  123     27
1   Faye  Sales   3/31/17     FB Inc        FB  123     34
2    Ray    Eng   3/31/18   XYZ Corp  No Symbol 345     59
3    Ray     HR   6/30/18   XYZ Corp  No Symbol 345     54
4    Jay     HR   9/30/18      A LLC         AA 678     53
5    Jim    Ops   9/30/16        New        NaN 999      8

这样做df3 = pd.merge(df1, df2, on='ID', how='left').drop('Company_x', axis=1)让我接近,但不保留Companydf1当没有找到匹配df2NanVS New):

  Person   Dept      Date   ID  Value Company_y     Symbol
0   Faye  Sales  12/31/16  123     27    FB Inc         FB
1   Faye  Sales   3/31/17  123     34    FB Inc         FB
2    Ray    Eng   3/31/18  345     59  XYZ Corp  No Symbol
3    Ray     HR   6/30/18  345     54  XYZ Corp  No Symbol
4    Jay     HR   9/30/18  678     53     A LLC         AA
5    Jim    Ops   9/30/16  999      8       NaN        NaN

我该如何解决?

贝尼

只需更改您的代码 fillna

df3 = pd.merge(df1, df2, on='ID', how='left')
df3.Company_y.fillna(df3.Company_x, inplace=True) # here is fillna with two value 
df3=df3.drop('Company_x', 1)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

熊猫有条件地创建数据框列:基于多个条件

熊猫有条件地创建数据框列:基于最大多个条件

有条件地连接数据框的行,并根据条件处理其他列

有条件地填充数据框的行

熊猫-有条件地在多列上合并数据框

如何有条件地将子字符串复制到熊猫数据框的新列中?

有条件地创建新的数据框列以显示现有列的内容

python pandas-有条件地合并数据

有条件地填写熊猫数据框

有条件地合并熊猫数据框

如何有条件地在条形图上的海洋条形图中显示数据框的不同列值?

有条件地合并多列

如何有条件地替换熊猫数据框列中的子字符串?

Python:如何从python的数据框中的列中有条件地删除字母?

Python:有条件地在循环中绘制数据框中许多列的数据

如何有条件地从Scala数据框中的列中的字符串中删除文本?

如何有条件地合并多维数组

R - 如何有条件地将连续列添加到数据框?

合并有条件的数据框

有条件地更新数据框中的日期

R 有条件地删除数据框

如何有条件地进行递归合并?

逐行有条件地修改 Pandas 数据框中列的有效方法

如何在不使用 for 循环的情况下有条件地从数据框中删除列?

如何有条件地对 Pandas 数据框求和

如何根据 julia 中的其他列值有条件地在数据框中创建新列

有条件地替换数据框(熊猫)中选定列中的所有值

如何通过将列值与列表进行比较来有条件地选择数据框行

有条件地从数据框中删除行