Python 基于第二个数据帧设置数据帧的值
我想在另一个数据帧中屏蔽一个基于布尔值的熊猫数据帧 因此,我创建了一个熊猫数据帧,分别为Python 基于第二个数据帧设置数据帧的值,python,pandas,Python,Pandas,我想在另一个数据帧中屏蔽一个基于布尔值的熊猫数据帧 因此,我创建了一个熊猫数据帧,分别为1和0: boolean_data = [(1, 0), (0, 1), (0, 0)] df_criteria = DataFrame(data=boolean_data, index=['A','B','C'], columns=['x','y']) df_结果(掩蔽前) IIUC,使用mask df_result.mask(df_criteria==1,0) Out[55]: x y A
1
和0
:
boolean_data = [(1, 0), (0, 1), (0, 0)]
df_criteria = DataFrame(data=boolean_data, index=['A','B','C'], columns=['x','y'])
df_结果
(掩蔽前)
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
如果希望直接更改
df_结果
,而不是返回新的数据帧,可以使用inplace=True
。等效地,df.mask(df_criteria.astype(bool),0)
,只是为了强调标准是一个布尔数据帧/数组。
x y
A 10 20
B 30 20
C 10 10
x y
A 0 20
B 30 0
C 10 10
df_result.mask(df_criteria==1,0)
Out[55]:
x y
A 0 20
B 30 0
C 10 10
df.iloc[:] = np.where(df_criteria, 0, df)
print(df)
x y
A 0 20
B 30 0
C 10 10