根据另一个数据框中特定值的所有实例更新 pandas 数据框中的所有值

Updated all values in a pandas dataframe based on all instances of a specific value in another dataframe

在此先致歉!我以前做过几次,但我有些脑雾。我有两个数据帧 df1 和 df2。如果它与 df1 中的特定值匹配,我想更新 df2 中的所有值,同时不更改 df2 中的其他值。我可以在数据框的列上使用 np.where 很容易地做到这一点,我对我之前如何使用 2 个数据框做到这一点感到困惑!

目标:如果 DF1 中的值为 0,则将 Df2 中的值设置为 0 - 否则保持 DF2 值

示例

df1

A B C
4 0 1
0 2 0
1 4 0

df2

A B C
1 8 1
9 2 7
1 4 6

元素交换后的预期 df2

A B C
1 0 1
0 2 0
1 4 0

脑雾不好!感谢您的协助!

你可以试试

df2[df1.eq(0)] = 0
print(df2)

   A  B  C
0  1  0  1
1  0  2  0
2  1  4  0

您可以使用布尔掩码,但前提是您确定数据帧具有相同的形状:

for col in df1.columns:
    mask = df1[df1[col] == 0]
    df2.loc[mask, col] = 0

使用fillna

>>> df2[df1 != 0].fillna(0)