【问题标题】:How to use an apply function together wih a conditional?如何将 apply 函数与条件一起使用?
【发布时间】:2020-06-22 18:30:00
【问题描述】:

我正在使用的数据框有一个名为“性别”的列,其中填充了“男性”/“女性”。 我需要将 'male'/'female' 更改为一个数字,即 0 或 1。

我正在尝试以下代码

result =  df.apply(lambda x: 1 if x == 'male' else 0, )

错误是

AttributeError: 'str' object has no attribute 'Sex'

【问题讨论】:

  • 使用pd.Series.map 并传递一个映射字典,如{'male':0, 'female':1}
  • 您能提供更多的代码吗?您发布的行似乎不是导致错误的行。
  • 我正在编码的数据帧是 kaggle 的巨大 ML 挑战

标签: python pandas lambda apply


【解决方案1】:
label_dict = {'male':0, 'female':1}
df['Sex'] = df.category.replace(label_dict)

您可以使用字典,将数据框列中的值映射到字典中的对应值。

【讨论】:

    【解决方案2】:

    使用.replace的版本

    df['Sex'] = df['Sex'].replace({'male': 1, 'female': 0})
    

    使用.map的版本

    df['Sex'] = df['Sex'].map({'male': 1, 'female': 0})
    

    使用布尔转换的版本

    df['Sex'] = (df['Sex'] == 'male').astype(int)
    

    最后一个版本的优点是使所有不同于男性的值都为 0

    【讨论】:

      猜你喜欢
      • 2022-11-14
      • 2011-12-01
      • 2014-08-28
      • 1970-01-01
      • 2018-07-08
      • 2013-08-13
      • 1970-01-01
      • 2016-01-23
      • 2016-10-02
      相关资源
      最近更新 更多