【问题标题】:How to transform a timestamp in a data frame如何转换数据框中的时间戳
【发布时间】:2018-07-23 19:59:05
【问题描述】:

我有以下数据框

df1:
col1 col2 timestamp
0    4    1512712800000
1    6    1512712800000
2    4    1518510600000
3    8    1512712800000
4    9    1518510600000

我想像这样转换时间戳

datetime.fromtimestamp(int("1518485400000")/1000)

>>>>2018-02-13 02:30:00

并将其保存为数据框中的新列

所以它应该是这样的

df1:
col1 col2 timestamp       Date
0    4    1512712800000   2018-02-13 02:30:00
1    6    1512712800000   2018-02-13 04:30:00
2    4    1518510600000   2018-02-13 01:35:00
3    8    1512712800000   2018-02-13 08:30:00
4    9    1518510600000   2018-02-13 09:30:00

然后我试着用那种方式来做

df1['Date'] = (datetime.fromtimestamp(int(df1.timestamp)/1000))

但我得到一个编译错误。什么问题,我该如何解决?

谢谢!

【问题讨论】:

  • 错误信息是什么?
  • 回溯(最近一次调用最后):文件“api1.py”,第 59 行,在 dfnew4['Date'] = (datetime.fromtimestamp(int(dfnew3.timestamp)/1000 )) 文件“/Users/Blueshift/anaconda3/lib/python3.6/site-packages/pandas/core/series.py”,第 97 行,包装器“{0}”.format(str(converter))) TypeError : 无法将系列转换为

标签: python dataframe timestamp


【解决方案1】:

这对你有用吗?

df1["Date"] = [datetime.fromtimestamp(int(x)/1000) for x in df1["timestamp"]]

我用来重新创建您的示例的完整代码:

import pandas as pd
from datetime import datetime

df1 = pd.DataFrame({"col1":[0,1,2,3,4],
                   "col2":[4,6,4,8,9],
                   "timestamp":["1512712800000","1512712800000","1518510600000","1512712800000","1518510600000"]})
df1["Date"] = [datetime.fromtimestamp(int(x)/1000) for x in df1["timestamp"]]
print (df1)

输出是这样的:

   col1  col2      timestamp                Date
0     0     4  1512712800000 2017-12-08 07:00:00
1     1     6  1512712800000 2017-12-08 07:00:00
2     2     4  1518510600000 2018-02-13 09:30:00
3     3     8  1512712800000 2017-12-08 07:00:00
4     4     9  1518510600000 2018-02-13 09:30:00

【讨论】:

    【解决方案2】:

    试试这样的:

    import pandas as pd
    import datetime
    
    df = pd.DataFrame({'col': [1,2], 'timestamp': ['1512712800000','1512713800000']})
    
    print df
    
    #    col      timestamp
    # 0    1  1512712800000
    # 1    2  1512713800000
    
    
    convDate = lambda x: datetime.datetime.fromtimestamp(int(x)/1000)
    
    df['date'] = df['timestamp'].apply(convDate)
    
    print df
    
    #    col      timestamp                date
    # 0    1  1512712800000 2017-12-08 06:00:00
    # 1    2  1512713800000 2017-12-08 06:16:40
    

    【讨论】:

      猜你喜欢
      • 2022-10-24
      • 2021-03-14
      • 1970-01-01
      • 2017-06-06
      • 1970-01-01
      • 2021-03-10
      • 1970-01-01
      • 2011-08-05
      • 2021-02-28
      相关资源
      最近更新 更多