我有2个数据帧df1和df2
df1;
A B C
0 11 22 55
1 66 34 54
2 0 34 66
df2;
A B C
0 11 33 455
1 0 0 54
2 0 34 766
两个数据框都具有相同的尺寸。我想说的是,如果df2中的value为0,则在df1中为该值(基于列和索引)赋予0。
所以df1将是
df1;
A B C
0 11 22 55
1 0 0 54
2 0 34 66
答案 0 :(得分:2)
df1 = df1.mask(df2 == 0, 0)
要获得更好的性能,请使用numpy.where
:
df1 = pd.DataFrame(np.where(df2 == 0, 0, df1),
index=df1.index,
columns=df1.columns)
print (df1)
A B C
0 11 22 55
1 0 0 54
2 0 34 66
答案 1 :(得分:2)
使用where
:
df1 = df1.where(df2.ne(0), 0)
print(df1)
A B C
0 11 22 55
1 0 0 54
2 0 34 66
答案 2 :(得分:1)
另一种方式-
df1 = df1[~df2.eq(0)].fillna(0)