【问题标题】:How to format pandas datetime64 type to show only the time and not the date and time如何格式化熊猫 datetime64 类型以仅显示时间而不显示日期和时间
【发布时间】:2019-08-29 01:55:56
【问题描述】:

我正在尝试将列类型从对象更改为 datetime64,但希望它仅将时间显示为小时:分钟。

该列是格式为 13:45:00 的字符串。当我将数据类型更改为 datetime64 时,它现在会用一个补好的日期 (1900-01-01 13:45:00) 打印它。

我希望列数据类型为 datetime64 类型(以便稍后进行比较和操作),但我只希望它以小时:分钟格式显示时间,不带秒和不带日期。 示例 - 13:45

我在 google 上能找到的一切都是关于只获取日期来显示和维护 datetime64 数据类型,这是我能够做到的。

我试过弄乱 pd.to_datetime().dt.strftime('%H:%M')。它正确地格式化了列,但它的数据类型是对象而不是 datetime64。

cycle_trips_df['Checkout Date'] = pd.to_datetime(
    cycle_trips_df['Checkout Date'], infer_datetime_format=True
    ).dt.normalize() #strftime('%m/%d/%Y') # format='%m/%d/%Y').dt.date

cycle_trips_df['Checkout Time'] = pd.to_datetime(
    cycle_trips_df['Checkout Time'], format='%H:%M:%S'
).dt.strftime('%H:%M')
print(cycle_trips_df.dtypes)

[输出]

结帐日期 datetime64[ns]
结帐时间对象

【问题讨论】:

    标签: python-3.x pandas datetime


    【解决方案1】:

    使用timedelta 而不是日期时间:

    In [11]: s = pd.Series(['13:45:00'])
    
    In [12]: pd.to_timedelta(s)
    Out[12]:
    0   13:45:00
    dtype: timedelta64[ns]
    

    【讨论】:

    • 谢谢你,这就是我最终所做的。
    【解决方案2】:

    区分数据和您对该数据的看法。 datetime64 是 datetime64,默认情况下将打印为完整的日期字符串。您可以使用strftime 获取时间部分。

    str = "13:45:00"                     # Your string.
    dt64 = pd.to_datetime(str)           # the datetime64 object
    timestr = dt64.strftime("%H:%M:%S")  # extracting the time string from the datetime64.
    

    【讨论】:

    • 我明白你的意思。我需要记住,我看到的是我的数据。当我决定查看数据时,我可以操纵数据以我想要的方式查看它。谢谢你的澄清。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-26
    • 1970-01-01
    • 2021-11-12
    • 2022-01-04
    • 2014-04-15
    • 2020-06-30
    相关资源
    最近更新 更多