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

如何使用pandas按7行分组将列表值减去数据列并忽略-9999与0

实现代码

import pandas as pd

# 转换字符串格式的T为整型列表
T = list(map(int, ['23','22','13','25','33','21','20']))

# 读取单列数据文件,无表头时读取后列名设为col
df = pd.read_csv('你的数据文件路径.txt', names=['col'])

# 写法1:用where方法直接条件赋值
df['new'] = (df['col'] - df.index.map(lambda x: T[x % 7])).where(~df['col'].isin([-9999, 0]), 0)

# 写法2:沿用你已有的mask代码片段实现
# tmp = df.mask(df.isin([-9999, 0]))
# df['new'] = (tmp['col'] - tmp.index.map(lambda x: T[x % 7])).fillna(0)

print(df)

逻辑说明

  • 用df.index % 7实现每7行自动分组,每组内的行位置和T的索引一一对应,适配任意7的整数倍长度的输入数据
  • 两种写法都可以实现需求:col值为-9999或0时new列返回0,其余情况返回col减去对应位置T的值,输出结果和你给出的预期完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 03:57:02