首页 > 解决方案 > 如何从 int64 转换回时间戳或日期时间?

问题描述

我正在做一个项目,看看投手的不同投球对每场比赛的破坏程度。我在这里查找了一个较早的错误,该错误修复了我的错误,但它给了我一些奇怪的数字。我的意思是,当我打印我希望成为的 2020 年 8 月 3 日时,我得到 1.5964128e+18。这就是我到达那里的方式。

hughes2020=pd.read_csv(r"C:/Users/Stratus/Downloads/Hughes2020Test.csv",parse_dates=['game_date'])
game=hughes2020['game_date'].astype(np.int64)
#Skipping to next part to an example
elif name[i]=="Curveball":
   if (c<curve)
      xcurve[c]=totalx[i]
      ycurve[c]=totaly[i]
      cudate[c]=game[i]
      c+=1

当我打印 cudate 时,它​​给了我很大的数字,我想知道如何将它改回来。

如果我运行它

game=hughes2020['game_date'] #.astype(np.int64)
    #Skipping to next part to an example
    elif name[i]=="Curveball":
       if (c<curve)
          xcurve[c]=totalx[i]
          ycurve[c]=totaly[i]
          cudate[c]=game[i]
          c+=1

它给了我一个

TypeError:float() 参数必须是字符串或数字,而不是“时间戳”

标签: pythonpandasnumpydatetime

解决方案


转换intdatetime使用pd.to_datetime()

df = pd.DataFrame(data=[1.5964128e+18], columns = ['t'])
df['t2'] = pd.to_datetime(df['t'])

              t         t2
0  1.596413e+18 2020-08-03

然而,更好的解决方案是在读取 csv 时转换日期(正如@sinanspd 正确指出的那样)。中的使用parse_dates和其他相关选项pd.read_csv()。功能手册在这里


推荐阅读