我有一个带有“日期”列的 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
我想过滤 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)]
但它们不起作用。
我怎样才能做到这一点?
最佳答案
您可以使用 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
关于python - 按列时间值过滤 pandas DataFrame,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30913547/