如何按行过滤Pandas DataFrame?保留std大于1000的列
按行条件过滤Pandas DataFrame列的解决方案
你的代码df.describe().sort_values(by = 'std', axis = 1).loc['std'] > 1000仅生成了布尔判断结果,没有用该结果去筛选列,因此无法达到保留符合条件列的预期效果。以下是正确的实现步骤:
步骤1:生成完整统计描述结果
先获取数据集的全量统计描述:
desc = df.describe()
步骤2:创建筛选掩码
提取std行中数值大于1000的布尔筛选条件:
std_mask = desc.loc['std'] > 1000
步骤3:筛选目标列
用布尔掩码过滤统计描述结果的列,得到所有标准差大于1000的列的完整统计信息:
filtered_desc = desc.loc[:, std_mask]
可选:排序后再筛选
如果需要按标准差排序后保留结果,可将排序与筛选合并:
# 按标准差降序排列后筛选 filtered_desc = df.describe().sort_values(by='std', axis=1, ascending=False).loc[:, std_mask]
执行后即可得到仅包含标准差大于1000的列的describe()结果。
内容的提问来源于stack exchange,提问作者Katsu
相关产品推荐
相关产品推荐

