基于“小时”日期时间选择Pandas数据帧行

4
我有一个名为“df”的pandas数据帧,其中包含一列名为“DateTimes”的datetime.time类型。
该列的条目是一天中的小时:
00:00:00
.
.
.
23:59:00

“秒”被跳过,计数按分钟进行。
例如,如何选择某个小时内的行,比如00:00:00到00:01:00之间的行?
如果我尝试这个:

df.between_time('00:00:00', '00:00:10')

我得到一个错误,说索引必须是 DateTimeIndex。
我使用以下代码将其设置为索引:
df=df.set_index(keys='DateTime')

但我还是遇到了同样的错误。
我似乎也无法让“loc”起作用。有什么建议吗?
2个回答

6
这里是一个实现你所尝试做的功能的工作范例:
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')

请注意,索引必须是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)

(如果您想将其设置为索引后删除原始列,则需要进行此操作)请注意,这里的“drop”是指在数据框中删除原始列。

谢谢,那个完美地解决了我的问题。因为我已经转换成datetime.time,所以在转换回datetime时遇到了问题,但我已经解决了它。 - Mike

0

谢谢,我的数据已经转换为datetime,具体来说是datetime.time。我已经阅读了第二个链接,但他们在“loc”中所做的事情似乎在我的情况下不起作用,并且讨论主要围绕日期而不是时间,我很难从他们所说的内容中联系到我的上下文。 - Mike

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