将csv列从大纪元时间转换为人类可读分钟

时间:2017-02-11 18:24:37

标签: python csv pandas epoch

我有pandas.DataFrame按时间编制索引,如下所示。时间是大纪元时间。当我绘制第二列时,这些时间值沿x轴显示。我希望在几分钟内获得更多可读时间:秒。

In [13]: print df.head()

Time
1481044277379    0.581858
1481044277384    0.581858
1481044277417    0.581858
1481044277418    0.581858
1481044277467    0.581858

我尝试了一些pandas函数,以及一些转换整个列的方法,我访问过:Pandas docs,这个question和酷site

我正在使用pandas 0.18.1

2 个答案:

答案 0 :(得分:2)

您可以使用以下内容将纪元时间戳转换为HH:MM:

import datetime as dt
hours_mins = dt.datetime.fromtimestamp(1347517370).strftime('%H:%M')

pandas.DataFrame添加列可以完成:

df['H_M'] = pd.Series([dt.datetime.fromtimestamp(int(ts)).strftime('%H:%M')
                       for ts in df['timestamp']]).values

答案 1 :(得分:2)

如果您使用read_csv阅读数据,则可以使用自定义日期分析程序:

import pandas as pd

#example.csv
'''
Time,Value
1481044277379,0.581858 
1481044277384,0.581858
1481044277417,0.581858
1481044277418,0.581858
1481044277467,0.581858
'''

def dateparse(time_in_secs):
   time_in_secs = time_in_secs/1000
   return datetime.datetime.fromtimestamp(float(time_in_secs))

dtype= {"Time": float, "Value":float}
df = pd.read_csv("example.csv", dtype=dtype, parse_dates=["Time"], date_parser=dateparse)
print df