首页 > 解决方案 > 熊猫数据框列值的多个条件的优化方法

问题描述

我同时在数据框上应用多个过滤器。

data_df[(data_df['1']!=0) & (data_df['2']==0) & (data_df['3']==0) & (data_df['4']==0) & (data_df['5']==0)]

我需要知道有没有优化的方法来做到这一点?因为我想将一列的值作为 !=0 和其他值作为 =0 多次比较,并且列可能超过 5。所以,所有操作将是:

data_df[(data_df['1']==0) & (data_df['2']!=0) & (data_df['3']==0) & (data_df['4']==0) & (data_df['5']==0)]
data_df[(data_df['1']==0) & (data_df['2']==0) & (data_df['3']!=0) & (data_df['4']==0) & (data_df['5']==0)]
data_df[(data_df['1']==0) & (data_df['2']==0) & (data_df['3']==0) & (data_df['4']!=0) & (data_df['5']==0)]
data_df[(data_df['1']==0) & (data_df['2']==0) & (data_df['3']==0) & (data_df['4']==0) & (data_df['5']!=0)]

寻找一种简短而优化的方法。

标签: pandasdataframe

解决方案


基于以下陈述:

寻找一种简短且优化的方法

我想将一列的值比较为 !=0 ,将其他列的值比较为 =0

您可以使用df.neand df.eqwith df.droponaxis=1删除列1

data_df[data_df[1].ne(0) & data_df.drop(1,axis=1).eq(0).all(axis=1)]

推荐阅读