我想用另一个掩盖df,而不管列的名称如何,但只考虑它们的位置。 例如,给定这两个df:
df = pd.DataFrame({'D': [10,20,0], 'E': [0, 30, 10], 'F': [0, 0, 10]})
df2 = pd.DataFrame({'A': [1,1,1], 'C': [1, 1, 1], 'E': [1, 1, 1]})
并使用此mask
:
mask = (df != 0)
我想要:
A C E
0 NaN 1.0 1.0
1 NaN NaN 1.0
2 1.0 NaN NaN
其中D
的{{1}},A
(第一个df)的掩码E
和C
的{{1}}(第二个df的掩码) )。
我可以删除列名:
F
但是有更好的方法吗?预先感谢
答案 0 :(得分:3)
您接近,可以将布尔数据框转换为布尔2d数组:
mask = (df != 0).values
dfn = df2.mask(mask)
print (dfn)
A C E
0 NaN 1.0 1.0
1 NaN NaN 1.0
2 1.0 NaN NaN