我有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
答案 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