我发现自己有时会迭代构建布尔值/掩码,所以类似:
mask = initialize_mask_to_true()
for condition in conditions:
mask = mask & condition
df_masked = pd.loc[mask, my_cols]
条件可能是单独的布尔掩码或比较之类的列表,例如df[some_col] > someVal
有没有很好的方法来做initialize_mask_to_true()?有时我会做些丑陋的事情:
mask = ~(df.loc[:, df.columns[0]] == np.nan)
之所以有效,是因为something == np.nan
始终为假,但感觉有一种更简洁的方法。
答案 0 :(得分:3)
我为此使用numpy.ones:
np.ones(df.shape[0], dtype=np.bool)
答案 1 :(得分:2)
如果必须保留索引:
mask= pd.DataFrame(True,index=df.index,columns=df.columns)
或
mask= pd.DataFrame(True,index=df.index,columns=[df.columns[0]])