我正在嘗試篩選列中某個日期的數據框。 colum條目是時間戳,我嘗試從這些構造一個布爾向量, 檢查某個日期。 我想:篩選數據框
filterfr = df[((df.expiration.month==6) & (df.expiration.day==22) & (df.expiration.year==2002)]
它不工作,因爲「系列」對象有沒有屬性「月」。 這怎麼辦?
我正在嘗試篩選列中某個日期的數據框。 colum條目是時間戳,我嘗試從這些構造一個布爾向量, 檢查某個日期。 我想:篩選數據框
filterfr = df[((df.expiration.month==6) & (df.expiration.day==22) & (df.expiration.year==2002)]
它不工作,因爲「系列」對象有沒有屬性「月」。 這怎麼辦?
當你做df.expiration
時,你得到一個Series
其中的項目是到期日期時間。
嘗試比較實際datetime.datetime
對象:
filterfr = df[df['expiration'] == datetime.datetime(2002, 6, 22)]
你可能要考慮使用DatetimeIndex
,根據您的數據集。這可讓您使用便捷的語法
df['2002-06-22']
要訪問,你必須把它包在DatetimeIndex(目前*)的DatetimeIndex方法。
的最快方法是訪問日,月和年屬性(就像你未遂):
expir = pd.DatetimeIndex(df['expiration'])
(expir.day == 22) & (expir.month == 6) & (expir.year == 2002)
替代,但慢方法是使用標準化的方法(將其帶到了當天的啓動),或使用日期屬性:
pd.DatetimeIndex(df['expiration']).normalize() == datetime.datetime(2002, 06, 22)
pd.DatetimeIndex(df['expiration']).date == datetime.datetime(2002, 06, 22)
*在0.15會有一個dt的屬性,這樣您就可以訪問這些爲:
expir = df['expiration']
expir.dt.day ...
這 filterfr = DF [DF [ '到期'] == datetime.datetime(2002,6,22)] 工作得很好。
然而,做一些過濾後,我試圖做filterfr.expiration [0] 或filterfr [「過期」] [0] 獲得該系列中的第一個元素時,得到一個錯誤, 。 KeyError:0L被提出,儘管系列中有元素。 該系列看起來像這樣: 名稱:過期,長度:534668,dtype:datetime64 [ns]
這不應該總是工作嗎?
這隻會在一天的開始時起作用(對於其他時間戳不會有±) –