根据另一个数据框中特定值的所有实例更新 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)
在此先致歉!我以前做过几次,但我有些脑雾。我有两个数据帧 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)