我有一个熊猫数据帧“ 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”来工作。有什么建议吗?
答案 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
希望对您有帮助