如何用大熊猫的平均值替换一段时间内的值?

时间:2017-12-03 10:32:00

标签: 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)相关,时间戳应保持不变,而不是与值一起变为mean'd。
  3. 理想情况下,我不想按N行分组,而是按时间范围(例如分钟,小时,天)分组,因为我无法保证时间戳的间隔相等。
  4. 我意识到这有点复杂,并且可以在各种不同的步骤中完成,但我是使用pandas的新手,并且希望有更简单的内置步骤。任何指针都非常赞赏!

1 个答案:

答案 0 :(得分:1)

试试这个:

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