2016-06-10 69 views
1

我有這樣的數據框。熊貓:如何提取僅在一段時間內的行?

     value estimated \ 
dttm_timezone                
2011-12-31 20:10:00 10.7891   0 
2011-12-31 20:15:00 11.2060   0 
2011-12-31 20:20:00 19.9975   0 
2011-12-31 20:25:00 15.9975   0 
2011-12-31 20:30:00 10.9975   0 
2011-12-31 20:35:00 13.9975   0 
2011-12-31 20:40:00 15.9975   0 
2011-12-31 20:45:00 11.7891   0 
2011-12-31 20:50:00 10.9975   0 
2011-12-31 20:55:00 10.3933   0 

通過使用dttm_timezone列的信息,我想提取所有這些都只是內一天或一個一週或一個月行。

我有1年的數據,所以如果我選擇日期作爲持續時間,我應該分別提取365天的數據,如果我選擇月份,那麼我應該分別提取12個月的數據。

我該如何做到這一點?

+0

/@哈加爾你嘗試過什麼? – Merlin

+0

你可以更具體的「提取所有在一天之內的行」 你的意思是你想特定一天,並拿出當天發生的所有行嗎?或者您的意思是您想要重新對數據進行索引,以使其頻率爲每日?在後一種情況下,你想如何彙總這些值?取最大值?均值? ettertera –

+0

@美林:我知道每5分鐘收集一次樣本,所以我計算了一天和一個月需要多少行。我很擔心,如果採樣時間發生變化,那麼它將不起作用,所以我只是想知道是否有任何方法可以使用熊貓函數來完成。我正在考慮使用resample。 – HaggarTheHorrible

回答

3

讓我們用

import pandas as pd 
import numpy as np 

tidx = pd.date_range('2010-01-01', '2014-12-31', freq='H', name='dtime') 

np.random.seed([3,1415]) 
df = pd.DataFrame(np.random.rand(len(tidx)), tidx, ['value']) 

可以限制'2010'這樣的:

df['2010'] 

或者

df[df.index.year == 2010] 

您可以通過以下方式限制到特定的月份:

df['2010-04'] 

或全部Aprils:

df[df.index.month == 4] 

您可以限制特定的日子:

df['2010-04-28'] 

所有下午1:00的:

df[df.index.hour == 13] 

日期範圍:

df['2011':'2013'] 

df['2011-01-01':'2013-06-30'] 

有大量的方法來做到這一點:

df.loc[(df.index.month == 11) & (df.index.hour == 22)] 

鏈接--->The list can go on and on. Please read the docs < ---鏈接

+0

@jezrael這次更快。你是快速的。 – piRSquared