我想基于另一个数据帧中的布尔值掩盖一个Pandas数据帧。
所以,我已经创建了1
和0
的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)=1
,df_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
答案 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.iloc
和numpy.where
:
df.iloc[:] = np.where(df_criteria, 0, df)
print(df)
x y
A 0 20
B 30 0
C 10 10