如何检索并删除DataFrame中最值均为0的列
批量删除DataFrame中最值均为0的列
假设我们有一个名为df的DataFrame,示例数据如下:
Name Scores Project_score Attendence 1 Kahn 25 0 0 2 Uri 22 0 0 3 John 24 0 0 4 Shushi 21 0 0 5 Johnny 25 0 0
要批量删除所有最大值和最小值均为0的列,无需手动指定列名,可采用以下方法:
方法一:先筛选目标列再删除
- 遍历所有列,筛选出符合条件的列名:
cols_to_drop = [col for col in df.columns if df[col].min() == 0 and df[col].max() == 0]
- 删除这些列:
# 直接修改原DataFrame df.drop(cols_to_drop, axis=1, inplace=True) # 或者生成新的DataFrame new_df = df.drop(cols_to_drop, axis=1)
方法二:一行代码完成筛选与保留
利用布尔索引直接保留符合要求的列:
df = df.loc[:, ~((df.min() == 0) & (df.max() == 0))]
df.min()/df.max():返回每列的最小/最大值(df.min() == 0) & (df.max() == 0):标记出最值均为0的列~:取反,保留不符合上述条件的列
以上两种方法都能自动处理大量列的场景,无需手动列举列名。
内容的提问来源于stack exchange,提问作者aone 1807
相关产品推荐
相关产品推荐

