2013-05-02 28 views
2

因此,我有一個大型熊貓DataFrame,其中包含大約兩個月的信息,每秒鐘有一行信息。太多的信息需要立即處理,所以我想抓住特定的時間表。下面的代碼將2012年2月5日之前搶的一切:抓取DataFrame中特定日期之間的選擇

sunflower[sunflower['time'] < '2012-02-05'] 

我想要做的這相當於:

sunflower['2012-02-01' < sunflower['time'] < '2012-02-05'] 

但這是不允許的。現在,我可以用這兩條線這樣做:

step1 = sunflower[sunflower['time'] < '2012-02-05'] 
data = step1[step1['time'] > '2012-02-01'] 

,但我有20個不同的DataFrames並進行多次,並能很容易地做到這將是很好的做到這一點。我知道大熊貓是這個能力,因爲如果我的日期是指數而不是一列,這很容易做到,但因爲日期重複他們無法索引,因此您收到此錯誤:

Exception: Reindexing only valid with uniquely valued Index objects 

那麼我該如何去做這件事?

回答

8

您可以單獨定義屏蔽:

df = DataFrame('a': np.random.randn(100), 'b':np.random.randn(100)}) 
mask = (df.b > -.5) & (df.b < .5) 
df_masked = df[mask] 

或者在同一行:

df_masked = df[(df.b > -.5) & (df.b < .5)] 
+0

不會說是非常低效的,如果這是一個反覆的過程。我想看看這麼多的數據,所以我必須經常輸入這3行。這就是爲什麼我在尋找一個單線程編號 – 2013-05-02 15:24:34

+0

。 – qua 2013-05-02 15:43:14

+0

這實際上是非常有效的(不管它是否是單行)。掩碼只是一個布爾數組。使用2個術語只是和另一個術語(或環),非常有效。並且你只做了一次(數據幀採用布爾值掩碼並將其應用於底層numpy數據) – Jeff 2013-05-02 15:49:32

相關問題