【问题标题】:How to update series based on other pandas dataframe如何根据其他熊猫数据框更新系列
【发布时间】:2018-05-24 08:19:37
【问题描述】:

我想根据其他熊猫数据框更新数据,因为我只是收集更好的数据,这里是数据集的例子

这是我的数据

No  Country    Language    Capital
1   Indonesia  Bahasa      Jakarta
2   Malaysia   Bahasa      Kuala Lumpur
3   Brunei     Bahasa      Bandar Seri Begawan
4   Nigeria    English     Abuja

我的第二个数据框

Nation     Capital City
Malaysia   Lagos
Nigeria    Putrajaya

我想要的是

No  Country    Language    Capital
1   Indonesia  Bahasa      Jakarta
2   Malaysia   Bahasa      Putrajaya
3   Brunei     Bahasa      Bandar Seri Begawan
4   Nigeria    English     Lagos

【问题讨论】:

    标签: python pandas dataframe series


    【解决方案1】:

    首先从您的新映射创建一个系列:

    s = df2.set_index('Nation')['Capital City']
    

    然后使用pd.Series.update 就地更新您的系列:

    df1['Capital'].update(df1['Country'].map(s))
    

    【讨论】:

      【解决方案2】:

      您可以使用新的Seriesmap,创建不存在的Nations NaNs,然后替换为fillna

      s = df2.set_index('Nation')['Capital City']
      df1['Capital'] = df1['Country'].map(s).fillna(df1['Capital'])
      print (df1)
         No    Country Language              Capital
      0   1  Indonesia   Bahasa              Jakarta
      1   2   Malaysia   Bahasa                Lagos
      2   3     Brunei   Bahasa  Bandar Seri Begawan
      3   4    Nigeria  English            Putrajaya
      

      或使用replace 更慢的解决方案:

      df1['Capital'] = df1['Country'].replace(s)
      

      【讨论】:

        猜你喜欢
        • 2020-09-23
        • 2017-01-14
        • 2017-03-11
        • 1970-01-01
        • 1970-01-01
        • 2019-12-09
        • 2020-10-21
        • 2023-03-17
        • 1970-01-01
        相关资源
        最近更新 更多