如何基于另一个df布尔值修改df?

时间:2019-01-26 17:17:29

标签: python pandas

我有2个DataFrame。 df1(布尔值)和df2(整数)。我不知道如何基于df1修改df2。

目标:修改df2并将df1中的False值更改为100。如果为True,请不要更改。

df1
date         x     y      w      z 
2017-02-02  True  False  True   True
2017-02-03  False True   True   True


df2
date         x    y    w   z 
2017-02-02   1    2    3   4
2017-02-03   2    4    1   3

期望

df2
date         x    y    w   z 
2017-02-02   1   100   3   4
2017-02-03   100  4    1   3

2 个答案:

答案 0 :(得分:1)

这可以通过简单的条件语句来实现

df2[df1==False] = 100

答案 1 :(得分:0)

where + iloc

您可以使用pd.DataFrame.where,确保仅选择相关列(即忽略前几列)。通常,从不需要用熊猫显式检查== False== True

df2.iloc[:, 1:] = df2.iloc[:, 1:].where(df1.iloc[:, 1:], 100)

print(df2)

         date    x    y  w  z
0  2017-02-02    1  100  3  4
1  2017-02-03  100    4  1  3