按列时间值过滤pandas DataFrame

时间:2015-06-18 11:01:03

标签: python pandas

我有一个带有'date'列的pandas 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

我想过滤数据框架,因此我只保留具有规定时间的行,例如6时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 个答案:

答案 0 :(得分:1)

您可以使用datetime属性访问器访问hour属性,以便在dtype为日期时间后过滤df:

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