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

使用Pandas按唯一ID计算相邻月度CSV中Entries列的环比增减百分比

环比计算实现方案

前提假设

你已完成文件读取与筛选,得到上月数据DataFrame df_prev、当月最新数据DataFrame df_curr。

核心处理逻辑

  • 对两个DataFrame按id字段做外连接,分别保留两个月的Entries字段值
  • 缺失值填充:仅在当月存在的id,上月Entries填充为0;仅在上月存在的id,当月Entries填充为0
  • 自定义计算规则处理环比,覆盖ID仅存在于单月的特殊场景
  • 最终输出仅保留id与对应环比结果

Pandas 代码示例

import pandas as pd

# 可选步骤:若单个文件内存在同id多条数据,提前按id聚合Entries(可根据业务调整为取最新/求和等)
df_prev = df_prev.groupby('id', as_index=False)['Entries'].sum()
df_curr = df_curr.groupby('id', as_index=False)['Entries'].sum()

# 外连接合并两个月份数据
df_merge = pd.merge(
    df_prev[['id', 'Entries']].rename(columns={'Entries': 'entries_last_month'}),
    df_curr[['id', 'Entries']].rename(columns={'Entries': 'entries_current_month'}),
    on='id',
    how='outer'
)

# 填充缺失值
df_merge['entries_last_month'] = df_merge['entries_last_month'].fillna(0)
df_merge['entries_current_month'] = df_merge['entries_current_month'].fillna(0)

# 计算环比百分比
def calc_month_on_month(row):
    if row['entries_last_month'] == 0:
        if row['entries_current_month'] == 0:
            return 0.0
        # 上月无对应数据,可根据业务需求调整返回值,也可直接返回float('inf')
        return "新增无上月基数"
    ratio = (row['entries_current_month'] - row['entries_last_month']) / row['entries_last_month'] * 100
    return round(ratio, 2)

df_merge['环比增长率(%)'] = df_merge.apply(calc_month_on_month, axis=1)

# 输出最终结果
result = df_merge[['id', '环比增长率(%)']]
# 可直接导出为csv:result.to_csv('entries_mom_result.csv', index=False, encoding='utf-8-sig')

特殊场景说明

  • 仅在当月出现的ID:默认返回新增无上月基数,可根据业务规则替换为100%等自定义标识
  • 仅在上月出现的ID:当月Entries为0,计算结果为-100%,代表当期数据跌零
  • 两个月Entries均为0的ID,返回0%

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 00:57:03