【问题标题】:Pandas add a column based on a composite condition on other column [duplicate]熊猫根据其他列上的复合条件添加列[重复]
【发布时间】:2018-10-26 05:22:30
【问题描述】:

我有一个数据框是

| A  | B |
| -- | -- |
| 1  | good |
| 2  | bad  |
| 3  | bad  |
| 4  | mid  |

我想添加另一列将 B 列转换为数字,这样如果 B 为“好”,则为 1,如果 B 为“坏”,则为 0,如果 B 为“中”,则为另一个数字,比如 2。

鉴于数据框非常大,最有效的方法是什么?我可以使用 lambda 函数和.apply,这是一种方法,不是特别有效。使用过滤你可以做类似的事情

df['C'] = np.where(df['B']=='good', 1, 0)

这将允许我使用二进制条件并且非常快。但是要使它同时满足这两个条件,我必须使用其中两个语句。我想知道是否有一种方法可以使用双重条件的有效过滤。

【问题讨论】:

    标签: python pandas dataframe


    【解决方案1】:

    使用字典。例如定义:

    d = {'good': 1, 'bad': 0, 'mid': 2}
    

    然后使用pd.Series.map,它接受字典作为输入:

    df['C'] = df['B'].map(d)
    

    您也可以使用pd.Series.replace,但这种方法通常会产生较差的性能。

    相关:Replace values in a pandas series via dictionary efficiently

    【讨论】:

      猜你喜欢
      • 2018-11-08
      • 1970-01-01
      • 1970-01-01
      • 2019-07-25
      • 1970-01-01
      • 2023-01-11
      • 2019-09-09
      • 2019-11-03
      • 2021-04-14
      相关资源
      最近更新 更多