You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python筛选CSV特定行并计算指定列正数值的最大最小值差

需求与解决方案

需求说明

筛选CSV文件中满足ColumnA=1且ColumnC=0的行,提取这些行内ColumnB的正数值,计算该数值集合的最大值与最小值的差值。

示例CSV数据

Column AColumn BColumn CColumn D
1-9900.4567
1-9900.5678
160400.123
167600.2894
16900.3983
17000.3983
17100.3983
2-3000.3983
2-40200.3983
245300.3983
246400.3983

原有代码(原逻辑为计算均值)

用户原本编写的循环代码用于计算不同ColumnA值对应的ColumnB均值,现需替换为最大最小值差值计算:

for u in range(1, 19):
        ColumnZ = df.query(f'ColumnB >0 & ColumnC == 0 & ColumnA == {u}')['ColumnB'].mean()
        test.loc[rowIndex, 'ColumnZ'] = ColumnZ

修改后的代码(计算最大最小值差值)

方式1:仅处理ColumnA=1的场景

如果只需要针对ColumnA=1的情况计算,直接筛选后计算即可:

# 筛选符合条件的行,提取ColumnB的正数值
filtered_data = df.query('ColumnA == 1 & ColumnC == 0 & ColumnB > 0')['ColumnB']
# 计算差值,处理空数据避免报错
if not filtered_data.empty:
    value_diff = filtered_data.max() - filtered_data.min()
else:
    value_diff = None  # 可根据需求设置默认值,比如0

方式2:保留原有循环逻辑(处理ColumnA=1到18)

如果需要保持循环处理ColumnA从1到18的场景,修改如下:

for u in range(1, 19):
        filtered_data = df.query(f'ColumnB >0 & ColumnC == 0 & ColumnA == {u}')['ColumnB']
        # 计算差值,空数据时设为None或其他默认值
        if not filtered_data.empty:
            ColumnZ = filtered_data.max() - filtered_data.min()
        else:
            ColumnZ = None
        test.loc[rowIndex, 'ColumnZ'] = ColumnZ

示例结果验证

根据提供的示例数据,符合条件的ColumnB正数值为69、70、71:

  • 最大值:71
  • 最小值:69
  • 差值:71 - 69 = 2

内容的提问来源于stack exchange,提问作者Kkura

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 10:40:49