跨2个数据框的熊猫条件

时间:2018-12-28 10:46:30

标签: pandas dataframe

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

3 个答案:

答案 0 :(得分:2)

使用DataFrame.mask

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)