DataFrame 中的 Datetime 对象,只有时间

Posted

技术标签:

【中文标题】DataFrame 中的 Datetime 对象,只有时间【英文标题】:Datetime object in DataFrame with just time 【发布时间】:2020-08-04 06:17:22 【问题描述】:

这是普通的列

0       06:55:22
1       06:55:23
2       06:55:24
3       06:55:25
4       06:55:26

我想将该列放在索引中,问题是当我尝试使用方法 resample() 时,我总是遇到同样的问题:

TypeError: 仅对 DatetimeIndex、TimedeltaIndex 或 PeriodIndex 有效,但获得了 'Index' 的实例

我一直在使用它来将时间列更改为

datetime dt['Time'] = pd.to_datetime(dt['Time'],format).apply(lambda x: x.time())

【问题讨论】:

【参考方案1】:

您可以使用set_indexTime 列设置为数据框的索引。

In [1954]: df.set_index('Time')                                                                                                                                                                             
Out[1954]: 
          a
Time       
06:55:23  1
06:55:24  2
06:55:25  3
06:55:26  4

OP 评论后更新

如果您没有date 列,那么当您将其转换为datetime 时,pandas 会附加一个默认日期1900-01-01。像这样:

In [1985]: pd.to_datetime(df['Time'], format='%H:%M:%S')                                                                                                                                                    
Out[1985]: 
0   1900-01-01 06:55:23
1   1900-01-01 06:55:24
2   1900-01-01 06:55:25
3   1900-01-01 06:55:26
Name: Time, dtype: datetime64[ns]

【讨论】:

主要问题是我无法将 dtype:object 更改为该列的日期时间,并将该列作为日期时间放在索引中... @renton 你也有date 专栏吗?如果没有,我已经提供了解决方案。请检查我的更新答案。 不,我没有,但我只需要时间,我不想要日期...,这可能吗,或者程序总是需要一个日期来制作我的东西想要 如果你不给出日期,它会添加一个默认日期。请检查我的答案的第二部分。 是的,那将是理想的。

以上是关于DataFrame 中的 Datetime 对象,只有时间的主要内容,如果未能解决你的问题,请参考以下文章

将 Pandas DataFrame 中的日期对象列转换为字符串

pandas使用to_datetime函数将字符串时间数据列转化为时间对象数据列计算dataframe结束时间列和起始时间列的时间差并计算时间差的均值

pandas使用to_datetime函数将字符串时间数据列转化为时间对象数据列计算dataframe结束时间列和起始时间列的时间差并计算时间差的中位数(median)

pandas将dataframe中的年月日数据列合并成完整日期字符串并使用to_datetime将字符串格式转化为日期格式

使用 .datetime 查找时间是在另一个时间之前还是之后

在 DataFrame 中将 Pandas 系列转换为 DateTime