在熊猫中使用 if 条件填充熊猫中的 na 值

时间:2021-04-28 11:17:48

标签: python pandas if-statement mapping

我在 df 中有一些列,其中一列缺少值。我需要填充它们,但仅当 ColumnY 具有 False 值时才需要。

这是 df 的样子

A                 B                    C
Value             4                    True
v3                9                    True
v9                                     False
v0                4                    False

我有一本字典,我用它来映射 B 列中的值...

di_map = {'V3' : 'A',  'V9' : 'X', 'V0' : 'Z'  }



df['B'] =  df['A'].map(di_map)

这是输出的样子

A                 B                    C
Value             4                    True
v3                9                    True
v9                X                    False
v0                Z                    False

2 个答案:

答案 0 :(得分:2)

您可以使用Series.where()

  • df.CTrue 的行中,保留原始 df.B
  • df.CFalse 的行中,使用 df.A.str.upper().map(di_map)
df['B'] = df.B.where(df.C, df.A.str.upper().map(di_map))

#        A    B      C
# 0  Value  4.0   True
# 1     v3  9.0   True
# 2     v9    X  False
# 3     v0    Z  False

答案 1 :(得分:0)

我对你的问题有点困惑,因为我在你的 df 中没有看到任何 columnY。

但是根据你的目标输出,你可以试试这个:

df["B"].iloc(df["C"]==False) = "New_Val"

df["B"].loc(df["C"]==False) = "New_Val"

取决于您的 Python 版本。