【问题标题】:Convert pandas column with object type to date ISO 8601 format将具有对象类型的 pandas 列转换为日期 ISO 8601 格式
【发布时间】:2022-01-15 01:43:13
【问题描述】:

我的数据框如下:

df_test = pd.DataFrame({'User':['a','a','a','b','b','b'],
                     'Timestamp':['2021-12-09T23:00:00Z','2021-12-09T07:00:00Z','2021-12-09T15:00:00Z','2021-12-08T23:00:00Z','2021-12-09T11:00:00Z','2021-12-09T11:00:00Z'],
                     'Qty':[10, -10, 10, 30, 5, -5]})

我尝试使用此解决方案 How do I convert dates into ISO-8601 DateTime format in a Pandas dataframe 将我的 Timestamp 列转换为 ISO 8601 格式,但它不起作用:

df_test['Timestamp']=pd.to_datetime(df_test['Timestamp']).dt.strftime('%Y-%m-%dT%H:%M:%SZ')

我的 df_test['Timestamp'] 仍然显示为对象列而不是日期时间。请帮忙。

【问题讨论】:

    标签: python pandas date iso8601


    【解决方案1】:
    import pandas as pd
    import datetime
    
    def toiso(dt):
        d=datetime.datetime.strptime(dt,'%Y-%m-%dT%H:%M:%SZ')
        return d.isoformat()
    
    df_test = pd.DataFrame({'User':['a','a','a','b','b','b'],
                         'Timestamp':['2021-12-09T23:00:00Z','2021-12-09T07:00:00Z','2021-12-09T15:00:00Z','2021-12-08T23:00:00Z','2021-12-09T11:00:00Z','2021-12-09T11:00:00Z'],
                         'Qty':[10, -10, 10, 30, 5, -5]})
    
    df_test['Timestamp']=df_test['Timestamp'].apply(toiso)
    '''
      User            Timestamp  Qty
    0    a  2021-12-09T23:00:00   10
    1    a  2021-12-09T07:00:00  -10
    2    a  2021-12-09T15:00:00   10
    3    b  2021-12-08T23:00:00   30
    4    b  2021-12-09T11:00:00    5
    5    b  2021-12-09T11:00:00   -5
    '''
    

    您必须为数据框调用函数apply并将列替换为新值

    【讨论】:

    • 我尝试使用您的方法,但我的时间戳列仍然显示为对象而不是日期时间。
    猜你喜欢
    • 1970-01-01
    • 2010-10-04
    • 1970-01-01
    • 2015-02-07
    • 1970-01-01
    • 2013-09-08
    • 1970-01-01
    • 1970-01-01
    • 2021-07-29
    相关资源
    最近更新 更多