我在 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
答案 0 :(得分:2)
您可以使用Series.where()
:
df.C
为 True
的行中,保留原始 df.B
值df.C
为 False
的行中,使用 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 版本。