Pandas,带有 datetime64 列的数据框,按小时查询

Aco*_*rbe 3 python datetime pandas datetime64

我有一个 Pandas 数据框df,其中一列由datetime64,例如

<class 'pandas.core.frame.DataFrame'>
Int64Index: 1471 entries, 0 to 2940
Data columns (total 2 columns):
date    1471  non-null values
id      1471  non-null values
dtypes: datetime64[ns](1), int64(1)
Run Code Online (Sandbox Code Playgroud)

我想df使用一天中的小时作为标准进行子采样(独立于 中的其他信息date)。例如,在伪代码中

df_sub = df[ (HOUR(df.date) > 8) & (HOUR(df.date) < 20) ]
Run Code Online (Sandbox Code Playgroud)

对于某些功能HOUR

我想这个问题可以通过从datetime64到的初步转换来解决datetime。这可以更有效地处理吗?

Aco*_*rbe 5

找到了一个简单的解决方案。

df['hour'] = df.date.apply(lambda x : x.hour)

df_sub = df[(df.hour > 8) & (df.hour) <20]
Run Code Online (Sandbox Code Playgroud)

编辑:

有一个属性dt专门用来处理这个问题。查询变为:

df_sub = df[ (df.date.dt.hour > 8) 
              &  (df.date.dt.hour < 20) ]
Run Code Online (Sandbox Code Playgroud)