我想屏蔽一个基于另一个数据帧中的布尔值的 Pandas 数据帧。
因此,我创建了一个1
和0
的熊猫数据帧:
boolean_data = [(1, 0), (0, 1), (0, 0)]
df_criteria = DataFrame(data=boolean_data, index=['A','B','C'], columns=['x','y'])
x y 一 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 乙 30 20 C 10 10
df_result
(遮蔽后(
x y A 0 20 B 30 0 C 10 10
IIUC, 使用mask
df_result.mask(df_criteria==1,0)
Out[55]:
x y
A 0 20
B 30 0
C 10 10
使用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