python - 如何用 pandas 替换一定时间范围内的值及其平均值?

标签 python pandas numpy pandas-groupby

我的数据如下所示:

    timestamp  value
0       12345    0.0
1       12346    1.0
2       12347    4.0
3       12348    2.0
4       12349    6.0
...

我想把它变成这样:

    timestamp  value
0       12345    0.5
1       12346    0.5
2       12347    3.0
3       12348    3.0
4       12349    6.0
...

我想通过将值替换为特定时间范围的平均值来降低值的“分辨率”。这类似于:

df = df.groupby(df.index // N).mean()

其中 N 是要表示的行数,但以下情况除外:

  1. 我想保留行数(在 pandas 中也称为:“pad”/“ffill”这些意思)。
  2. 与 (1) 相关,时间戳应保持不变,而不是与值一起被表示。
  3. 理想情况下,我不想按 N 行进行分组,而是按时间范围(例如分钟、小时、天)进行分组,因为我无法保证时间戳的间隔相等。

我意识到这有点复杂,可以通过多种不同的步骤来完成,但我是使用 pandas 的新手,希望有更简单的内置步骤。非常感谢任何指点!

最佳答案

试试这个:

In [12]: df['value'] = df['value'].groupby(np.arange(len(df)) // N).transform('mean')
In [13]: df
Out[13]:
   timestamp  value
0    12345    0.5
1    12346    0.5
2    12347    3.0
3    12348    3.0
4    12349    6.0

关于python - 如何用 pandas 替换一定时间范围内的值及其平均值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47617499/

相关文章:

python - Keras - 弹出并重新添加图层,但图层不会断开连接

python - 将空白分隔数字列表转换为 float 列表

python - 我想向 Pandas 数据框添加一个新索引

python - 使用 Pandas 进行基本矩阵计算

python - 置信区间 3 维图

python - 通过检查多个条件更改 Pandas 列值

python - 如何在 Python 中的执行之间保留数据

python - 快速读取所有 csv 文件并更新共享字典

python - 将 pandas 管道中的一系列分隔(用等号)分成多列

python - 如何有效地创建一个多维 numpy 数组,其条目仅取决于一维索引?