Python Pandas 中的时间格式化

Posted

技术标签:

【中文标题】Python Pandas 中的时间格式化【英文标题】:Time formatting in Python Pandas 【发布时间】:2016-01-29 10:32:33 【问题描述】:

我有一个mm:ss.0 格式的 Excel 文件。我在 Excel 中将其格式化为[h]:mm:ss;@。如何在 Pandas 中做到这一点?

Time : 58:44.1 in mm:ss.0 格式在格式化后在 Excel 中以 [h]:mm:ss;@ 格式生成结果 7:58:44

例如:

Input      Desired Output
58:44.1    7:58:44
07:53.3    8:07:53
46:59.6    9:47:00
20:14.0    10:20:14
50:58.7    11:50:59
19:50.0    12:19:50
41:53.5    13:41:53

【问题讨论】:

所以你只想添加小时组件,增加它并删除.0 对吗? @EdChum - 是的,完全正确 【参考方案1】:

您可以使用矢量化的str 方法对字符串进行切片,然后使用to_datetime 构造datetime,传递格式字符串并向其添加TimedeltaIndex,然后使用dt.time 访问time 组件:

In [199]:
df['Desired Output'] = (pd.to_datetime(df['Input'].str[:-2], format='%M:%S') + pd.TimedeltaIndex(np.arange(7, 7 + len(df)), 'h')).dt.time
df

Out[199]:
     Input Desired Output
0  58:44.1       07:58:44
1  07:53.3       08:07:53
2  46:59.6       09:46:59
3  20:14.0       10:20:14
4  50:58.7       11:50:58
5  19:50.0       12:19:50
6  41:53.5       13:41:53

可以看到 Desired Output 的 dtype 不是datetime.time

In [201]:
df['Desired Output'].iloc[0]

Out[201]:
datetime.time(7, 58, 44)

【讨论】:

我怎样才能将所需的输出设为datetime.time,因为我需要找到两个这样的输入时间的持续时间? 对不起,我在最后一行代码中显示的是datetime.time 在我的结果中它仍然是一个对象类型。 没错,你可以看到,当你查看单行值时,dtype 是datetime.time 我得到了两列,即desiredOutput1 和desiredOutput2,格式为您提供的格式。我现在想计算两者之间的时间差,但我无法计算出错误TypeError: unsupported operand type(s) for -: 'datetime.time' and 'datetime.time'

以上是关于Python Pandas 中的时间格式化的主要内容,如果未能解决你的问题,请参考以下文章

将 Python 中的两个电子表格与 Pandas 合并,按“时间”列中最近的“时间”,XX:XX:XX 格式的值

Python pandas数据框“日期”索引xlsx和csv中的不同格式

如何找出 python pandas 数据框列(日期格式)中的空白?

Python Pandas 数据以日期格式输出到 excel 的问题 [重复]

在 python pandas 中从相同 csv(我自己的 json 格式)中的值创建一个 Json 列

python 将字符串格式的日期(DD.MM.YYYY)转换为Pandas中的日期格式