根据第二个数据帧设置数据帧的值

时间:2018-06-14 14:19:41

标签: python pandas

我想基于另一个数据帧中的布尔值掩盖一个Pandas数据帧。

所以,我已经创建了10的pandas DataFrame:

boolean_data = [(1, 0), (0, 1), (0, 0)]
df_criteria = DataFrame(data=boolean_data, index=['A','B','C'], columns=['x','y'])
    x    y
A   1    0
B   0    1
C   0    0

我想使用上面的df_criteria屏蔽第二个数据帧df_result的值,即df_criteria(i,j)=1df_result(i,j)=0

df_result = DataFrame(
    data=[(10, 20), (30, 20), (10, 10)],
    index=['A','B','C'], columns=['x','y'])

df_result(在掩盖之前)

   x    y
A  10   20
B  30   20
C  10   10

df_result(掩盖之后)

   x    y
A  0   20
B  30   0
C  10  10

2 个答案:

答案 0 :(得分:3)

IIUC,使用mask

df_result.mask(df_criteria==1,0)
Out[55]: 
    x   y
A   0  20
B  30   0
C  10  10

答案 1 :(得分:1)

使用pd.DataFrame.ilocnumpy.where

df.iloc[:] = np.where(df_criteria, 0, df)

print(df)

    x   y
A   0  20
B  30   0
C  10  10