【问题标题】:Increment initial time value in floating seconds?以浮动秒为单位增加初始时间值?
【发布时间】:2021-12-14 19:39:51
【问题描述】:

我有一个初始时间值,例如 15:59:26.186000(格式为 %H:%M:%S.%f)。

还有一个以秒为浮点数的 pandas DataFrame

SECONDS
0.44121
0.92844 
1.60995 
2.16770  
2.87059 

有没有办法将这些秒数添加到初始值?所以第一行是15:29:26.627,等等。

【问题讨论】:

标签: python pandas


【解决方案1】:

您可以使用pd.to_timedelta 将Series 转换为增量,并将其添加到初始值的datetime 版本中:

s = pd.Series([0.44121, 0.92844, 1.60995, 2.16770, 2.87059])
t = '15:59:26.186000'
pd.to_timedelta(s, unit='s') + pd.to_datetime(t, format='%H:%M:%S.%f')

【讨论】:

  • 非常感谢。这将输出为 datetime64。 PS to_timedelta 有单位参数(不是单位)。
  • 只保存没有日期的时间 ​​df['Timing'] = pd.to_datetime(df['Timing'], format='%H:%M:%S.%f').dt .time
【解决方案2】:

您可以使用pd.to_timedeltaunitSECONDS 转换为时间并添加:

df['SECONDS'] = pd.Timedelta('15:59:26.186000') + pd.to_timedelta(df['SECONDS'], unit='s')

你也可以乘:

df['SECONDS'] = pd.Timedelta('15:59:26.186000') + df['SECONDS'] * pd.Timedelta('1s')

输出:

                 SECONDS
0 0 days 15:59:26.627210
1 0 days 15:59:27.114440
2 0 days 15:59:27.795950
3 0 days 15:59:28.353700
4 0 days 15:59:29.056590

【讨论】:

  • '15:59:26.186000' 应该是日期时间,而不是时间增量
  • @MadPhysicist 是的,可能是 OP。但是没有日期的日期时间对我来说没有多大意义,在不同日期运行的代码会给出不同的输出:-)。
  • 默认日期不是今天,而是一个固定的数字。输出在我的回答中是确定性的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多