Python 如何使用pandas访问布尔表达式
下面是Excel 说明:我必须删除类别、子类别和子类别2数据,如果筛选列的值大于0,则应删除NAN、0和负值 预期产出: 下面是我试过的脚本 def测试文件: df=pd.read\u文件 掩码=df[‘过滤器’]!=0.2滴漏纳 如果遮罩: df1=df[遮罩] df1[“类别”]= df1[“子类别”]= df1['子类别2']= 打印df1 TESTtest.xlsx 我在错误下面, ValueError:数据帧的真值不明确。使用a.empty、a.bool、a.item、a.any或a.all。请帮助我。使用: 这里有一个例子 是的,我试过使用mask.any操作符,但在打印df时,它在类别中给出空列。Python 如何使用pandas访问布尔表达式,python,python-3.x,pandas,python-2.7,Python,Python 3.x,Pandas,Python 2.7,下面是Excel 说明:我必须删除类别、子类别和子类别2数据,如果筛选列的值大于0,则应删除NAN、0和负值 预期产出: 下面是我试过的脚本 def测试文件: df=pd.read\u文件 掩码=df[‘过滤器’]!=0.2滴漏纳 如果遮罩: df1=df[遮罩] df1[“类别”]= df1[“子类别”]= df1['子类别2']= 打印df1 TESTtest.xlsx 我在错误下面, ValueError:数据帧的真值不明确。使用a.empty、a.bool、a.item、a.any或a.
where=df['Filter'].eq(0)| ( df['Filter'].isnull() | df['Filter'].eq('') )
cols=['CATEGORY','SUB_CATEGORY','SUB_CATEGORY_2']
df[cols]=df[cols].where(where)
df=pd.DataFrame({'Modules':'M1 M2 M3 M4 M5 M6 M7 8'.split(),'Filter':[1 ,3 ,6, np.nan, 0 ,np.nan ,2, 0],
'CATEGORY':[np.nan,np.nan,np.nan,'data','data','data',np.nan,'data'],
'SUB_CATEGORY':[np.nan,np.nan,np.nan,'data','data','data',np.nan,'data'],
'SUB_CATEGORY_2':[np.nan,np.nan,np.nan,'data','data','data',np.nan,'data']})
Modules Filter CATEGORY SUB_CATEGORY SUB_CATEGORY_2
0 M1 1.0 NaN NaN NaN
1 M2 3.0 NaN NaN NaN
2 M3 6.0 NaN NaN NaN
3 M4 NaN data data data
4 M5 0.0 data data data
5 M6 NaN data data data
6 M7 2.0 NaN NaN NaN
7 8 0.0 data data data
where=df['Filter'].eq(0)| ( df['Filter'].isnull() | df['Filter'].eq('') )
cols=['CATEGORY','SUB_CATEGORY','SUB_CATEGORY_2']
df[cols]=df[cols].where(where,'')
print(df)
Modules Filter CATEGORY SUB_CATEGORY SUB_CATEGORY_2
0 M1 1.0
1 M2 3.0
2 M3 6.0
3 M4 NaN data data data
4 M5 0.0 data data data
5 M6 NaN data data data
6 M7 2.0
7 8 0.0 data data data