大熊猫的日期时间默认为1970

时间:2018-07-30 05:27:33

标签: python pandas date datetime datetime-format

我在将日期转换为正确格式时遇到问题。

我有一个看起来像这样的列:20130525,存储为int64。

我正在尝试将其设置为日期,但出现问题。

我写了一个看起来像这样的函数:

def reformat_dates(df):
    df['column'] = pd.to_datetime(df['column'], format = "%Y-%m-%d")

    return df

但是当我执行该函数时,我最终看到这样的一列:

1970-01-01 00:00:00.020130525

我的函数是否存在某种问题,使其以这种方式默认设置?我希望格式为

2013-05-25

5 个答案:

答案 0 :(得分:2)

这有用吗?

df['column'] = pd.to_datetime(df['column'], format = "%Y%m%d").dt.strftime('%Y-%m-%d')

答案 1 :(得分:1)

我认为您要转换的列是unix时间戳格式 并且您应该使用unit ='s'

def reformat_dates(df):
df['column'] = pd.to_datetime(df['column'], unit='s')

return df

答案 2 :(得分:0)

我认为需要:

df = pd.DataFrame({'column':['20130525','20130525']})
df['column'] = pd.to_datetime(df['column'], format = "%Y%m%d")
print (df)
      column
0 2013-05-25
1 2013-05-25

答案 3 :(得分:0)

我有同样的问题。对我来说,问题在于以秒为单位指定单位:

pandas.to_datetime(df_cpu2['time'], unit='s')

学分here

答案 4 :(得分:0)

import datetime
import numpy as np
df['creationDate']  =(df['creationDate']).astype(np.int64) // 10**3

df['pubDate'] =   (df['pubDate']).astype(np.int64) // 10**3