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

pandas中多列不同行数值相加及min/max/count聚合运算问题求助

pandas跨行聚合操作实现方案

1. 求和需求实现

你需要用到pandas的shift方法实现跨行取值:Series.shift(-1)会将整列数据向上移动1行,原最后一行的位置会自动填充空值,刚好匹配你2003年无下一年A列数据的计算规则。
示例代码如下:

# 提取下一行的A列值,最后一行对应值为空
next_row_A = df['A'].shift(-1)
# 计算当前行C、D + 下一行A的和
df['sum'] = df['C'] + df['D'] + next_row_A

2. 最小/最大/计数等聚合需求实现

如果需要对「当前行C、当前行D、下一行A」三个值做聚合,只需要先把三个序列拼接为临时DataFrame,再按行执行聚合操作即可,和你熟悉的单列聚合逻辑一致:

import pandas as pd

# 提取三个参与计算的列
col_c = df['C']
col_d = df['D']
next_col_a = df['A'].shift(-1)

# 拼接为临时DataFrame,按行对齐
temp_df = pd.concat([col_c, col_d, next_col_a], axis=1)

# 取三个值的最小值
df['min_val'] = temp_df.min(axis=1)
# 取三个值的最大值
df['max_val'] = temp_df.max(axis=1)
# 统计三个值中非空值的数量
df['notnull_count'] = temp_df.count(axis=1)
# 示例:统计三个值中大于0的数量
df['pos_count'] = temp_df.gt(0).sum(axis=1)

注意事项

执行上述代码前请确保你的DataFrame已经按年份升序排序,否则shift方法获取的不是下一年的对应值,排序代码参考:

# 替换为你实际的年份列名
df = df.sort_values('year').reset_index(drop=True)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 23:24:02