python - 按列时间值过滤 pandas DataFrame

标签 python pandas

我有一个带有“日期”列的 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/

相关文章:

python - 使用 sympy 的微分方程的边界条件

python - 在 Python 中读取 csv 文件时获取 "newline inside string"?

python - 我需要更改pandas数据框中的几列类型。无法使用iloc这样做

python - 为什么使用 DataFrameGroupBy.agg 时可以访问传递给聚合函数的系列中的所有数据帧列?

python - 在 pandas 中添加时间戳偏移量

Python bool 值数组?

python - 类从哪里获得它们的默认 '__dict__' 属性?

python - Django 从所有查询中排除字段

python - 如何让python将 "YYYY W##"识别为日期时间对象,然后填充添加小于某一周的时间对象

python - 两个 Pandas 数据帧之间每个单元格中不同的位计数