【问题标题】:How to update type of index in a data frame如何更新数据框中的索引类型
【发布时间】:2018-03-02 11:29:28
【问题描述】:

我有一个数据框df,它的索引结构如下:

>> df.index.values
array(['2017-12-19T07:00:04.753422000', '2017-12-19T07:00:09.628389000',
       '2017-12-19T07:00:12.065880000', ...,
       '2018-01-22T15:29:52.462586000', '2018-01-22T15:29:54.900103000',
       '2018-01-22T15:29:56.728234000'], dtype='datetime64[ns]')

如您所见,索引的dtypedatetime64[ns]如何将其dtype 更新为datetime64[us]? (this post 对我不起作用)。

确实,主要问题来自调用此函数df.to_sql('table_name', engine) 以将df 插入到postgre 的表中。我得到了以下错误:

错误:无法将 DatetimeIndex 转换为 dtype datetime64[us]

而且我无法使用这些帖子(12)解决问题,因为它们对索引 dtype 没有帮助。

【问题讨论】:

    标签: python postgresql pandas datetime dataframe


    【解决方案1】:

    您只能单独转换DatetimeIndex,如果将其分配回pandas floor并转换为默认ns

    idx = pd.DatetimeIndex(['2017-12-19T07:00:04.753422000', '2017-12-19T07:00:09.628389000',
               '2017-12-19T07:00:12.065880000', 
               '2018-01-22T15:29:52.462586000', '2018-01-22T15:29:54.900103000',
               '2018-01-22T15:29:56.728234000'])
    df = pd.DataFrame({'a':range(6)}, index=idx)
    print (df)
                                a
    2017-12-19 07:00:04.753422  0
    2017-12-19 07:00:09.628389  1
    2017-12-19 07:00:12.065880  2
    2018-01-22 15:29:52.462586  3
    2018-01-22 15:29:54.900103  4
    2018-01-22 15:29:56.728234  5
    
    idx = df.index.values.astype('datetime64[us]')
    print (idx.dtype)
    datetime64[us]
    
    df.index = df.index.values.astype('datetime64[us]')
    
    print (df.index.dtype)
    datetime64[ns]
    

    如果使用其他值 - 例如到ms,然后地板更好看:

    df.index = df.index.values.astype('datetime64[ms]')
    print (df)
                             a
    2017-12-19 07:00:04.753  0
    2017-12-19 07:00:09.628  1
    2017-12-19 07:00:12.065  2
    2018-01-22 15:29:52.462  3
    2018-01-22 15:29:54.900  4
    2018-01-22 15:29:56.728  5
    

    【讨论】:

    • 使用df.index = df.index.values.astype('datetime64[us]')
    猜你喜欢
    • 2023-03-14
    • 1970-01-01
    • 2021-12-10
    • 1970-01-01
    • 2019-10-23
    • 2016-03-28
    • 2018-10-04
    • 1970-01-01
    • 2019-10-13
    相关资源
    最近更新 更多