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 的问题 [重复]