Pandas重新采样数据帧

时间:2013-08-30 08:15:43

标签: python pandas resampling

我有一个重新采样(下采样)问题应该很简单,但我无法做到! 这是一个简化的例子:

df:  
       Time         A
0   0.01591  0.108929
1   0.27973  0.411764
2   0.55044  0.064253
3   0.81386  0.317394
4   1.07983  0.722707
5   1.35051  1.154193
6   1.61495  1.151492
7   1.88035  0.123389
8   2.15462  0.093583
9   2.41534  0.260944
10  2.67992  1.007564
11  2.95148  0.325353
12  3.21364  0.555593
13  3.47980  0.740621
15  4.01519  1.619669
16  4.28679  0.477371
17  4.55482  0.432049
18  4.81570  0.194224
19  5.07992  0.331936

时间列以秒为单位。我想将Time列作为索引,并将数据帧下采样为1s。请帮忙吗?

2 个答案:

答案 0 :(得分:0)

您可以使用reindex并选择一种填充方法

In [37]: df.set_index('Time').reindex(range(0,6), method='bfill')
Out[37]: 
          A
0  0.108929
1  0.722707
2  0.093583
3  0.555593
4  1.619669
5  0.331936

答案 1 :(得分:0)

首先将您的索引转换为日期时间格式:

df.index=pd.to_datetime(df.Time,unit='s')

然后是resample秒(这是默认值的平均值,但可以更改为总和等 - 例如添加how='sum'作为参数):

d.resample('S')

                         Time         A
Time                                   
1970-01-01 00:00:00  0.414985  0.225585
1970-01-01 00:00:01  1.481410  0.787945
1970-01-01 00:00:02  2.550340  0.421861
1970-01-01 00:00:03  3.346720  0.648107
1970-01-01 00:00:04  4.418125  0.680828
1970-01-01 00:00:05  5.079920  0.331936

如果重要,可以更改年份/日期。