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

如何在Pandas DataFrame中偏移索引且保持内容完整?

相邻周期DataFrame处理方案

Hey there, 看你提到有两个分别对应周期X和周期X-1的DataFrame(周期支持日/月度),先把你给出的示例数据清晰呈现出来,再给你几个实用的处理操作和代码片段:

数据示例

DF(周期X)

Item 1  Item 2
2018-01-02  0.431  0.656
2018-01-03  0.439  0.668
2018-01-04  0.447  0.680
2018-01-05  0.455  0.692
2018-01-08  0.479  0.729
2018-01-09  0.487  0.741
2018-01-10  0.495  0.753

DF(周期X-1)

Item 1  Item 2
2018-01-02  0.429  0.651
2018-01-03  0.431  0.656
2018-01-04  0.439  0.668
2018-01-05  0.447  0.680
2018-01-08  0.455  0.692
2018-01-09  0.479  0.729
...

常用处理操作

1. 合并数据做同日期对比

如果想要把两个周期的数值放在同一行方便查看,直接按日期索引合并即可:

import pandas as pd

# 确保索引是 datetime 类型(如果还不是的话)
df_x.index = pd.to_datetime(df_x.index)
df_x_prev.index = pd.to_datetime(df_x_prev.index)

# 合并并添加后缀区分周期
merged_df = pd.merge(df_x, df_x_prev, left_index=True, right_index=True, suffixes=('_X', '_X-1'))

合并后你就能直观看到每个日期下两个周期的指标差异。

2. 计算环比变化率

这应该是处理相邻周期数据最常见的需求了,计算当前周期相对上一周期的变化百分比:

# 先对齐两个DataFrame的日期
aligned_df = df_x.join(df_x_prev, rsuffix='_prev')

# 计算环比((当前值-上周期值)/上周期值 * 100)
aligned_df['Item1_环比(%)'] = ((aligned_df['Item 1'] - aligned_df['Item 1_prev']) / aligned_df['Item 1_prev']) * 100
aligned_df['Item2_环比(%)'] = ((aligned_df['Item 2'] - aligned_df['Item 2_prev']) / aligned_df['Item 2_prev']) * 100

3. 筛选变化显著的记录

如果需要找出指标波动超过某个阈值的日期,用布尔索引就能轻松实现:

# 设定波动阈值,比如2%
threshold = 2
# 筛选Item1或Item2环比超过阈值的记录
significant_changes = aligned_df[
    (abs(aligned_df['Item1_环比(%)']) > threshold) | 
    (abs(aligned_df['Item2_环比(%)']) > threshold)
]

如果还有更具体的需求(比如月度周期的特殊对齐、缺失值处理等),可以补充说明细节哦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:08:09