在 pandas 中使用 if-condition 来填充 pandas 中的 na 值

Using if-condition in pandas to fill na values in pandas

我在 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

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

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

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

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

取决于您的 python 版本。

您可以使用 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