【问题标题】:Cannot fill in missing values with conditional statement pandas无法用条件语句 pandas 填充缺失值
【发布时间】:2021-07-31 16:23:16
【问题描述】:

我有一个 dataframe,其中包含男性和女性的属性列。有一列df['long_hair']0=no1=yes。我想根据它的性别填写此列中的缺失值。这是我的代码。但是,问题是,就地不适用于条件语句列。那么我该怎么做呢?

df[df['Male']==1]['long_hair'].fillna(0,inplace=True)

此代码表示获取男性并用 0 填充缺失值(表示他们没有长头发)。

【问题讨论】:

  • df.loc[df['Male']==1,"long_hair"].fillna(0,inplace=True) 工作吗?
  • 我试过了,还是不行。
  • 我尝试应用 lambda 函数,但它没有填补缺失的值。
  • 你当然可以直接分配它,即df.loc[df['Male']==1,"long_hair"] =df.loc[df['Male']==1,"long_hair"]. fillna(0),但奇怪的是原地不起作用
  • 是的,不知何故我明白了,但谢谢你的帮助!

标签: python pandas dataframe


【解决方案1】:

您可以使用pd.Series.where 分配绕过它

cond bool Series/DataFrame,类数组,或可调用 如果 cond 为 True,则保留原始值。如果为 False,则替换为其他对应的值。如果 cond 是可调用的,它是在 Series/DataFrame 上计算的,并且应该返回 boolean Series/DataFrame 或数组。可调用对象不得更改输入 Series/DataFrame(尽管 pandas 不会检查它)。

df.long_hair = df.long_hair.where((df.Male != 1) | df.long_hair.isnull())

当它不是男性或不为空时,这将保留值。

【讨论】:

  • 我不知道!非常感谢您的帮助。
  • @aliffnabil 不客气。如果回答解决了您的问题,则免费接受。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-10-02
  • 1970-01-01
  • 2023-02-02
  • 1970-01-01
  • 2019-12-13
  • 2012-10-25
相关资源
最近更新 更多