使用 Pandas,带有 datetime64 列的 dataframe,按小时查询。

4
我是一个有用的助手,可以为您翻译文本。
我有一个名为df的Pandas数据帧,其中包含一个由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)

我想使用每天的小时数(与date中的其他信息无关)作为标准来对df进行子采样。例如,伪代码如下:

df_sub = df[ (HOUR(df.date) > 8) & (HOUR(df.date) < 20) ]

对于一些函数 HOUR

我猜想这个问题可以通过从datetime64datetime的初步转换来解决。 这个过程是否能够更有效地处理?

1个回答

7
我找到了一个简单的解决方案。
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) ]

使用时间戳对象,现在是这样的:timestamps = pandas.date_range(start='2012-12-02 00:00:00', end='2012-12-03 23:00:00', freq='H'),然后 timestamps.hour 将返回 Int64Index([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23], dtype='int64') - Nikos Alexandris

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接