我有一个带有'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)]
但它们不起作用。
我怎样才能做到这一点?
答案 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