2015-06-18 2 views
2

У меня есть панд DataFrame с колонкой «датой», который использует этот формат:Фильтра панда DataFrame значения времени колонок

2015-01-01 04:00:00 
2015-01-01 05:00:00 
2015-01-01 06:00:00 
2015-01-01 07:00:00 
... 
2015-01-02 04:00:00 
2015-01-02 05:00:00 
2015-01-02 06:00:00 
2015-01-02 07:00:00 

Я хочу, чтобы фильтровать DataFrame, так что я только сохранить строки с заявленным временем , например 06:00:00

2015-01-01 06:00:00 
2015-01-02 06:00:00 

Я пытался что-то вроде

df['date'] = pd.to_datetime(df['date']) 
df = df[df['date'].time() == datetime.time(6)] 

Но они не работают.

Как я могу это достичь?

ответ

1

Вы можете использовать datetime атрибут аксессор для доступа к атрибуту hour для фильтрации ФРА когда DTYPE является DateTime:

In [141]: 
t="""2015-01-01 04:00:00 
2015-01-01 05:00:00 
2015-01-01 06:00:00 
2015-01-01 07:00:00 
2015-01-02 04:00:00 
2015-01-02 05:00:00 
2015-01-02 06:00:00 
2015-01-02 07:00:00""" 
s = pd.read_csv(io.StringIO(t), parse_dates=[0], header=None, names=['date']) 
s[s['date'].dt.hour == 6] 

Out[141]: 
       date 
2 2015-01-01 06:00:00 
6 2015-01-02 06:00:00 
+0

Спасибо. У вас есть хорошая книга о пандах, чтобы рекомендовать? – user3205999

+0

Существует [оригинал] (http://shop.oreilly.com/product/0636920023784.do), но его немного устаревший, ваш лучший выбор здесь, на SO и онлайн [docs] (http: /pandas.pydata.org/pandas-docs/stable/index.html) – EdChum