【问题标题】:Time formatting in Python PandasPython 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 - 是的,完全正确

标签: python excel python-2.7 pandas datetime-format


【解决方案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'
猜你喜欢
  • 2018-04-06
  • 1970-01-01
  • 1970-01-01
  • 2012-06-24
  • 1970-01-01
  • 1970-01-01
  • 2022-01-09
  • 1970-01-01
  • 2017-09-27
相关资源
最近更新 更多