1

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

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。请帮忙?

4

2 回答 2

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
于 2013-08-30T10:19:48.043 回答
0

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

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

然后resample按秒(这是默认情况下的平均值,但可以更改为 sum 等 - 例如添加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

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

于 2014-09-21T21:39:35.483 回答