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

如何遍历Pandas DataFrame列并与最后一列做差值计算?

解决方案

以下是实现需求的Pandas代码方案,包含完整步骤与注释:

import pandas as pd

# 1. 构造示例DataFrame(实际场景替换为你读取的tab文件数据)
data = {
    'A': [1.2, 2.1, 3.0],
    'B': [5.0, 3.0, 6.0],
    'C': [2.4, 2.7, 2.9],
    'test_data': [1.9, 2.6, 2.8]
}
df = pd.DataFrame(data, index=[1, 2, 3])
df.index.name = 'frequency'

# 2. 获取除最后一列(test_data)外的所有目标列
target_cols = df.columns[:-1]

# 3. 逐行计算差值:test_data对应值 - 其他列对应值
df[target_cols] = df['test_data'] - df[target_cols]

# 4. 生成各列均值统计行
stats = {col: df[col].mean().round(3) for col in target_cols}
stats_df = pd.DataFrame(stats, index=['average of column'])
stats_df['test_data'] = None  # 统计行的test_data列留空

# 5. 合并原数据与统计行
result_df = pd.concat([df, stats_df])

# 输出结果
print(result_df)

代码说明

  • 列选择:用df.columns[:-1]动态获取除最后一列外的所有列,避免硬编码列名,适配列数变化的场景。
  • 差值计算:利用Pandas广播特性,直接用一维的test_data列减去多列数据,自动完成逐行运算。
  • 统计行生成:通过字典推导式计算各列均值(保留3位小数匹配示例),再转换为DataFrame,确保统计行格式与原数据一致。
  • 合并数据:使用pd.concat合并原数据与统计行,符合Pandas新版本规范(替代已弃用的append方法)。

扩展统计量

若需要添加标准差、最大值、最小值等,可修改统计量生成逻辑:

# 扩展统计量示例:均值、标准差、最大值、最小值
stats = {
    col: {
        'average': df[col].mean().round(3),
        'std': df[col].std().round(3),
        'max': df[col].max().round(3),
        'min': df[col].min().round(3)
    } for col in target_cols
}
stats_df = pd.DataFrame(stats).T.reset_index().rename(columns={'index': 'frequency'}).set_index('frequency')
stats_df['test_data'] = None
result_df = pd.concat([df, stats_df])

内容的提问来源于stack exchange,提问作者knoppers-agent

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 04:50:23