【问题标题】:Subtracting 2 columns of date减去 2 列日期
【发布时间】:2021-08-23 09:11:18
【问题描述】:

我将 python 与 pandas 和 datetime 一起使用。

我在 csv 文件中有这样的数据框:

我也通过从“结束日期”中减去“开始日期”来添加名为“持续时间”的新列。

我尝试过的事情:

rides['Duration'] = end_time - start_time
duration = rides['Duration']

print(rides['Duration'])

我得到的是:

0     0 days 00:03:01
1     0 days 02:07:02
2     0 days 00:05:43

我想得到的是:

0     00:03:01
1     02:07:02
2     00:05:43

也就是说,我想去掉“天”,只显示时间。

【问题讨论】:

标签: python pandas datetime timestamp


【解决方案1】:

您可以使用 % 格式说明符来提取小时、分钟和秒。

print("%d:%d:%d"%(rides['Duration'].hour,rides['Duration'].minute,rides['Duration'].second))

【讨论】:

    【解决方案2】:

    如果您想要object 类型的“持续时间”列,请尝试通过rsplit()

    rides['Duration']=rides['Duration'].astype(str).str.rsplit(' ',1).str[1].str.strip('+|-')
    

    如果您想要datetime.time 类型的“持续时间”列,请尝试通过rsplit()to_datetime()

    rides['Duration']=pd.to_datetime(rides['Duration'].astype(str).str.rsplit(' ',1).str[1].str.strip('+|-')).dt.time
    

    【讨论】:

    • 谢谢,您的第一种方法效果很好。但现在我有另一个问题。 dtype 是对象,我需要它是“timedelta64 [ns]”。我该如何处理?
    • 然后使用第二种方法,因为它将创建datetime.time
    • 我试过第二种方法,我得到这个错误:“ParserError: Unknown string format: +23:04:14”
    • 非常感谢您的努力和帮助,如果我问了太多问题并打扰您,我们深表歉意,但 dtype 仍然是“对象”:(
    • No.....如果你使用第二种方法,那么它的类型是datetime.time,你可以通过rides['Duration'].map(type)交叉验证
    猜你喜欢
    • 1970-01-01
    • 2010-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-21
    • 2015-08-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多