簡體   English   中英

熊貓定制重新采樣時間序列數據

[英]Pandas custom re-sample for time series data

我有1分鍾頻率的時間序列數據。 我想每5分鍾重新采樣一次數據,並且重新采樣的數據應包括第一時間步長,中間時間步長和最后時間步長的數據。

我已經嘗試過這種方法,但是卻沒有達到我的期望...

def my_fun(array)
     return array[0],array[-1]


df=pd.DataFrame(np.arange(60),index=pd.date_range('2017-01-01 00:00','2017-01-01 00:59', freq='1T'

df.resample('5T').apply(my_fun)

如果我對您的理解正確,那么您希望在新數據框中記錄分鍾0,2,4,5,7,9,10,...的數據。 比使用重采樣更快的方法可能是:

df=pd.DataFrame(np.arange(60),index=pd.date_range('2017-01-01 00:00','2017-01-01 00:59', freq='1T'))
l = len(df)
df.loc[df.iloc[range(2,l,5)].index | df.iloc[range(4,l,5)].index | df.iloc[range(0,l,5)].index]

輸出:

                        0
2017-01-01 00:00:00     0
2017-01-01 00:02:00     2
2017-01-01 00:04:00     4
2017-01-01 00:05:00     5
2017-01-01 00:07:00     7
2017-01-01 00:09:00     9
2017-01-01 00:10:00     10

如果您只想將所選數據的組合列表排成一行,那么您就快到了:

def my_fun(array):
      return [array[0], array[2], array[4]]

df=pd.DataFrame({'0':np.arange(60)}, index=pd.date_range('2017-01-01 00:00','2017-01-01 00:59', freq='1T'))
df.resample('5T').apply(my_fun)

輸出:

                        0
2017-01-01 00:00:00     (0, 2, 4)
2017-01-01 00:05:00     (5, 7, 9)
2017-01-01 00:10:00     (10, 12, 14)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM