按列位置遮罩2 df

我想使用另一个掩盖df,而不管列的名称如何,但仅考虑它们的位置。例如,给定以下2 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掩模A,E掩模(第一DF的)C和F掩模E(第二DF的)。


我可以这样删除列名称:


df.columns = [''] * len(df.columns)

mask = (df != 0)

df2.columns = [''] * len(df2.columns)

dfn = df2.mask(mask)

但是有更好的方法吗?提前致谢


繁星点点滴滴
浏览 148回答 1
1回答

一只甜甜圈

您很接近,可以将布尔数据框转换为布尔二维数组:mask = (df != 0).valuesdfn = df2.mask(mask)print (dfn)     A    C    E0  NaN  1.0  1.01  NaN  NaN  1.02  1.0  NaN  NaN
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python