2013-08-30 164 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 

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