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

时间:2019-02-20 17:10:11

标签: python pandas datetime

我有一个熊猫数据帧“ df”,其列“ 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 个答案:

答案 0 :(得分:2)

这是您要执行的操作的一个可行示例:

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)

(仅当您要在将原始列设置为索引后删除原始列时,才有必要添加该列)

答案 1 :(得分:1)

查看以下链接:
将列转换为日期类型:Convert DataFrame column type from string to datetime
根据日期过滤数据框:Filtering Pandas DataFrames on dates
希望对您有帮助