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

使用Pandas编写函数计算绝对/相对变化无输出问题排查

Pandas计算年度金额变化值问题修复

问题原因

你的代码错误地将place和year同时作为分组依据,每个分组仅对应单个年份的单条数据,diff()和pct_change()无法在单条数据的分组内计算前后变化值,因此生成的结果全为NaN。要实现同一地点、不同年份的金额变化计算,只需按place分组即可。

修正后的代码

# 导入库
import pandas as pd
import numpy as np

# 定义计算函数
def calculate_change(df):
    # 按地点分组,计算年度金额的绝对变化
    df['absolute_change'] = df.groupby('place')['amount'].diff()
    # 按地点分组,计算年度金额的相对变化(百分比)
    df['relative_change'] = df.groupby('place')['amount'].pct_change()
    return df

# 示例数据
df = pd.DataFrame({'place': ['A', 'A', 'A', 'A', 'A', 'B', 'B', 'B', 'B', 'B'],
                   'year': [2010, 2011, 2012, 2013, 2014, 2010, 2011, 2012, 2013, 2014],
                   'amount': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]})

# 执行函数并查看结果
result_df = calculate_change(df)
print(result_df)

输出结果

placeyearamountabsolute_changerelative_change
A20101NaNNaN
A201121.01.0
A201231.00.5
A201341.00.333333
A201451.00.25
B20106NaNNaN
B201171.00.166667
B201281.00.142857
B201391.00.125
B2014101.00.111111

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 18:45:33