根据“小时”日期时间选择 Pandas 数据框行

Mik*_*ike 4 python datetime pandas

我有一个 Pandas 数据框“df”,其中包含一个 datetime.time 类型的“DateTimes”列。

该列的条目是一天的小时数:

00:00:00
.
.
.
23:59:00
Run Code Online (Sandbox Code Playgroud)

秒被跳过,它按分钟计数。

如何按小时选择行,例如 00:00:00 和 00:01:00 之间的行?


如果我试试这个:

df.between_time('00:00:00', '00:00:10')
Run Code Online (Sandbox Code Playgroud)

我收到一个错误,即索引必须是 DateTimeIndex。

我将索引设置为:

df=df.set_index(keys='DateTime')
Run Code Online (Sandbox Code Playgroud)

但我得到了同样的错误。

我似乎也无法让 'loc' 工作。有什么建议?

nka*_*zig 5

这是您尝试执行的操作的工作示例:

times = pd.date_range('3/6/2012 00:00', periods=100, freq='S', tz='UTC')
df = pd.DataFrame(np.random.randint(10, size=(100,1)), index=times)
df.between_time('00:00:00', '00:00:30')
Run Code Online (Sandbox Code Playgroud)

请注意,索引必须是 DatetimeIndex 类型。

我知道您有一列包含您的日期/时间。问题可能是您的列不是这种类型,因此您必须先将其转换,然后再将其设置为索引:

# Method A
df.set_index(pd.to_datetime(df['column_name'], drop=True)

# Method B
df.index = pd.to_datetime(df['column_name'])
df = df.drop('col', axis=1)
Run Code Online (Sandbox Code Playgroud)

(仅当您想在将其设置为索引后删除原始列时才需要删除)