2013-08-30 206 views
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 

时间列是秒。我想使时间列成为索引,并将数据帧缩减为1秒。请帮助?

+1

你如何做重采样? Time 1.0s的期望值是多少? – waitingkuo

回答

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 
+0

是的,在一定范围内工作正常。其他问题,但。我把数据集中真正的A矢量的长度传递给它,它不起作用。奇怪!!将范围函数本身传递给函数没有任何问题,但是当我将它传递给表达式时,您建议我在A中获得NAN ......任何想法? – jonas

+0

你的数据组的范围是多少? – waitingkuo

+1

范围是90000。 – jonas

0

首先你索引转换为datetime格式:

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 

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