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

Pandas .rolling()函数丢失TimeStamp列,如何保留所有列?

Pandas rolling() 后保留TimeStamp列的解决方法

问题原因

rolling().mean()默认仅对数值类型列执行滑动窗口计算,你的TimeStamp列是字符串类型(未转为datetime时),不属于数值列,因此会被排除在计算结果之外。而官方示例中将时间戳设为索引,索引不会参与rolling的数值计算,所以能保留时间信息。


方案1:将TimeStamp设为索引(推荐,对齐官方示例逻辑)

先把TimeStamp转为datetime类型并设置为索引,执行rolling计算后索引会自动保留,若需要将其转回普通列,可重置索引。

import pandas as pd
import numpy as np

dictionary = {'TimeStamp': {0: '2023-02-23 08:01:50.701',
  1: '2023-02-23 08:01:50.798',
  2: '2023-02-23 08:01:50.798',
  3: '2023-02-23 08:01:50.800',
  4: '2023-02-23 08:01:50.800'},
 'Delta_TP9': {0: np.nan,
  1: 0.8932789112449511,
  2: 0.8932789112449511,
  3: 0.8932789112449511,
  4: 0.8932789112449511},
 'Delta_AF7': {0: np.nan,
  1: -0.062321571240896,
  2: -0.0734485722420289,
  3: -0.0734485722420289,
  4: -0.0734485722420289}}

df = pd.DataFrame.from_dict(dictionary)
# 转换TimeStamp为datetime类型并设为索引
df['TimeStamp'] = pd.to_datetime(df['TimeStamp'])
df = df.set_index('TimeStamp')

# 执行滑动窗口计算,索引自动保留
rolling_result = df.rolling(3).mean()

# 可选:将TimeStamp转回普通列
rolling_result = rolling_result.reset_index()
print(rolling_result)

方案2:手动合并TimeStamp列到结果

如果不想修改索引,可以单独提取TimeStamp列,再与rolling计算结果按索引拼接。

import pandas as pd
import numpy as np

dictionary = {'TimeStamp': {0: '2023-02-23 08:01:50.701',
  1: '2023-02-23 08:01:50.798',
  2: '2023-02-23 08:01:50.798',
  3: '2023-02-23 08:01:50.800',
  4: '2023-02-23 08:01:50.800'},
 'Delta_TP9': {0: np.nan,
  1: 0.8932789112449511,
  2: 0.8932789112449511,
  3: 0.8932789112449511,
  4: 0.8932789112449511},
 'Delta_AF7': {0: np.nan,
  1: -0.062321571240896,
  2: -0.0734485722420289,
  3: -0.0734485722420289,
  4: -0.0734485722420289}}

df = pd.DataFrame.from_dict(dictionary)
# 单独提取TimeStamp列
time_col = df[['TimeStamp']]
# 执行滑动窗口计算
rolling_result = df.rolling(3).mean()
# 按索引合并两部分
final_result = pd.concat([time_col, rolling_result], axis=1)
print(final_result)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 02:18:13