【问题标题】:Getting the total seconds from a time_delta column python [duplicate]从time_delta列python获取总秒数[重复]
【发布时间】:2019-10-30 00:26:17
【问题描述】:

我已将变量 col1 转换为 to_time_delta,但现在我想创建一个新列,以提供 col1 的总秒数。 我怎么才能得到它? 这是我的代码: 导入数据

data = pd.read_csv(source + 'clustering_CB\\AAA_tableau_jan_oct_19_cardiologia.txt' ,sep='\t' , engine='python')

col1 转换为 timedelta:

ck = pd.to_timedelta(data['col1'], unit='ns')

这里是 col1 的示例:

00:10:30

现在我想在 ck 数据库中创建另一个列,它可以返回 col1 的总秒数 所以我期望找到的是,例如,00:10:30 的秒数转换,所以: 630 秒

【问题讨论】:

标签: sql python-3.x pandas


【解决方案1】:

当你写ck = pd.to_timedelta(data['col1'], unit='ns') 你的ck 不再有原来的col1,当你写“创建另一个列”时,我假设你想添加新列,那么你可以使用下面的代码:

在你的data = pd.read_csv(...之后:

data['td'] = pd.to_timedelta(data['col1'], unit='ns')
data['secs'] = data['td'].dt.seconds

会给你类似的东西:

      col1              td           secs
0   7291413234      00:00:07.291413    7
1   3245345223423   00:54:05.345223   3245

在 Jupyter 笔记本上测试:

import pandas as pd
import io

temp2=u"""col1
7291413234
3245345223423
"""
data = pd.read_csv(io.StringIO(temp2),sep='\t' , engine='python')
data['td'] = pd.to_timedelta(data['col1'], unit='ns')
data['secs'] = data['td'].dt.seconds
data

注意: https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.dt.seconds.html#pandas-series-dt-seconds

每个元素的秒数(>= 0 且少于 1 天)。

评论后添加:total_seconds 将返回浮点数:

data['secs2'] = data['td'].dt.total_seconds()
data
        col1          td            secs    secs2
0   7291413234      00:00:07.291413 7       7.291413
1   3245345223423   00:54:05.345223 3245    3245.345223

【讨论】:

  • 太棒了!谢谢阿列克谢
  • @ALollz,特别是在 pandas 中,它应该返回秒到每个文档一天,它返回 3245,发布数据以供复制。
  • @AlexeiMartianov 是的,似乎是这样。虽然total_seconds 对于一般转换为秒来说更安全,因为它可能超过 1 天。
猜你喜欢
  • 2021-09-22
  • 1970-01-01
  • 2021-03-14
  • 2017-07-24
  • 1970-01-01
  • 1970-01-01
  • 2020-07-16
  • 1970-01-01
  • 2021-11-20
相关资源
最近更新 更多