【问题标题】:How to change another pandas column using dictionary [duplicate]如何使用字典更改另一个熊猫列[重复]
【发布时间】:2021-03-27 19:48:39
【问题描述】:

这里有df

df = pd.DataFrame({'Menu':['Salad', 'Buger', 'Buger', 'Buger'], 
                    'Combo':['Salad A', 'Buger A', 'Buger B', 'Buger C'], 
                    'Status':['Regular', 'Regular', 'Regular', 'Promotion']}) 

    Menu    Combo       Status
0   Salad   Salad A     Regular
1   Buger   Buger A     Regular
2   Buger   Buger B     Regular
3   Buger   Buger C     Promotion

我想使用 dic 根据 Combo 值更改 Status。对此:

dic = {'Buger B': 'Promotion', 'Buger C': 'Unavailable'}

    Menu    Combo       Status
0   Salad   Salad A     Regular
1   Buger   Buger A     Regular
2   Buger   Buger B     Promotion
3   Buger   Buger C     Unavailable

【问题讨论】:

    标签: python dataframe replace


    【解决方案1】:

    您可以使用mapfillna

    df["Status"] = df["Combo"].map(dic).fillna(df["Status"])
    

    输出:

        Menu    Combo   Status
    0   Salad   Salad A Regular
    1   Buger   Buger A Regular
    2   Buger   Buger B Promotion
    3   Buger   Buger C Unavailable
    

    【讨论】:

      【解决方案2】:

      我会这样做。始终建议使用itertuples(),因为它是迭代pandas.DataFrame 的更快方法。

      for val in df.itertuples():
          combo_val = getattr(val, 'Combo')
          if combo_val in dic.keys():
              df.loc[val[0], 'Status'] = dic[combo_val]
      
      print(df)
      

      输出:

          Menu    Combo       Status
      0  Salad  Salad A      Regular
      1  Buger  Buger A      Regular
      2  Buger  Buger B    Promotion
      3  Buger  Buger C  Unavailable
      

      【讨论】:

        【解决方案3】:
        for key in dic.keys():
            df.loc[df['Combo'] == key, 'Status'] = dic[key]
        

        输出:

            Menu    Combo       Status
        0  Salad  Salad A      Regular
        1  Buger  Buger A      Regular
        2  Buger  Buger B    Promotion
        3  Buger  Buger C  Unavailable
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2019-08-11
          • 1970-01-01
          • 2021-09-05
          • 2019-02-18
          • 2018-08-06
          • 1970-01-01
          • 1970-01-01
          • 2021-08-17
          相关资源
          最近更新 更多