【问题标题】:pandas update/replace from different data frame熊猫从不同的数据框更新/替换
【发布时间】:2016-09-11 14:39:54
【问题描述】:

我有 2 个数据框:df1 和 df2。 df1 有列 ['UserId', 'company', 'deg'] 并有 100 个观察值。 df2 有列 ['UserId', 'deg'] 并且有 10 个观察值。 df1 和 df2 中的索引与“userId”完美匹配。

我想用 df2 中的更新 df1。 df2 中的 'UserId' 列是 df1 中的 'UserId' 列的子集......所以,没有什么可附加的。仅基于“userId”(和/或普通索引)。

df1

,'UserId','Company','deg'
6,'john21','ibm','bs'
12,'mary33','cisco','ms'
16,'smith11','intel','none'
20,'lucy55','intel','bs'
33,'tanya32','fb','ms'
39,'ssri44','google','none'
45,'har43','CDs','none'

df2

,'UserId','deg'
16,'smith11','BS'
39,'ssri44','MS'
45,'har43','MS'

现在,我想使用 df2 中的信息来更新 df1。如您所见,索引值和 userId 与 df1 中的完全匹配。

有什么建议吗?

谢谢!

【问题讨论】:

    标签: pandas


    【解决方案1】:

    您可以先将replaceNone 转换为NaN,然后使用fillnadf1 中的None 值更新为df2

    df1.replace({"'none'": np.nan}, inplace=True)
    #or omit '', for me works uncomment version
    #df1.replace({"none": np.nan}, inplace=True)
    
    print df1.fillna(df2)
    
         'UserId' 'Company' 'deg'
    6    'john21'     'ibm'  'bs'
    12   'mary33'   'cisco'  'ms'
    16  'smith11'   'intel'  'BS'
    20   'lucy55'   'intel'  'bs'
    33  'tanya32'      'fb'  'ms'
    39   'ssri44'  'google'  'MS'
    45    'har43'     'CDs'  'MS'
    

    update 的另一个解决方案:

    df1.replace({"'none'": np.nan}, inplace=True)
    
    df1.update(df2)
    print df1
         'UserId' 'Company' 'deg'
    6    'john21'     'ibm'  'bs'
    12   'mary33'   'cisco'  'ms'
    16  'smith11'   'intel'  'BS'
    20   'lucy55'   'intel'  'bs'
    33  'tanya32'      'fb'  'ms'
    39   'ssri44'  'google'  'MS'
    45    'har43'     'CDs'  'MS'
    

    如果您想通过df1 更新df2,请使用merge

    print pd.merge(df2,df1,left_index=True,right_index=True,how='left', on=["'UserId'","'deg'"])
         'UserId' 'deg' 'Company'
    16  'smith11'  'BS'   'intel'
    39   'ssri44'  'MS'  'google'
    45    'har43'  'MS'     'CDs'
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-04
      • 2019-02-02
      • 1970-01-01
      • 2018-02-13
      • 2018-09-29
      相关资源
      最近更新 更多