我有一个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)
我想使用一天中的小时作为标准对df
进行子样本处理(独立于date
中的其他信息)。例如,伪代码
df_sub = df[ (HOUR(df.date) > 8) & (HOUR(df.date) < 20) ]
用于某些功能HOUR
。
我想问题可以通过从datetime64
到datetime
的初步转换来解决。这可以更有效地处理吗?
答案 0 :(得分:3)
找到一个简单的解决方案。
df['hour'] = df.date.apply(lambda x : x.hour)
df_sub = df[(df.hour > 8) & (df.hour) <20]
编辑:
有一个属性dt
专门用于处理此问题。查询变为:
df_sub = df[ (df.date.dt.hour > 8)
& (df.date.dt.hour < 20) ]