pandas 获取类型错误:筛选 Dataframe 时,索引必须为DatetimeIndex

r8uurelv  于 2023-01-11  发布在  其他
关注(0)|答案(3)|浏览(138)

我想按特定的datatime周期过滤 Dataframe ,如以下代码所示。

df2 = df2['Dates'].between_time(pandas.to_datetime('5/13/2015 8:41'), pandas.to_datetime('5/13/2015 8:55'))[['Dates','Category']]

但收到错误"TypeError:索引必须为DatetimeIndex '这是 Dataframe

我试过
df2 = pandas.read_csv(path2,parse_dates=[0])
就像其他帖子的回复一样,但还是得到了同样的错误。有人知道这里发生了什么吗?

wqnecbli

wqnecbli1#

如果你想按特定的日期时间段过滤df,你可以尝试:

start_date = pandas.to_datetime('5/13/2015 8:41')
end_date = pandas.to_datetime('5/13/2015 8:55')
df2.loc[(df2['Dates'] > start_date) & (df2['Dates'] < end_date)]
ecbunoof

ecbunoof2#

正如你所提供的,我认为该指数的是不是DatetimeIndex,所以你可以试试:

df2.index=pd.to_datetime(df2.index)
0s0u357o

0s0u357o3#

在我的例子中,我有一个包含不同列的df,名为“df_whole”,其中一列的日期时间格式如下:2022-08-11 23:00:48:007.我从一个Cassandra数据库加载了它,所以它已经格式化了。
以下是我遵循的步骤:

1)将我的df中字面上称为'datetime'的日期时间列转换为Pandas喜欢的格式

df_whole['datetime'] = pd.to_datetime((df_whole['datetime']))

2)获取该列并将索引给予df

df_whole.index = df_whole['datetime']

3)现在使用过滤器:

df_whole.between_time('14:00', '21:00')

任务完成!

相关问题