2017-02-11 72 views
2

我有一個按時間索引的pandas.DataFrame,如下所示。時間是在大紀元時間。當我繪製第二列時,這些時間值沿着x軸顯示。我想在幾分鐘內獲得更可讀的時間:秒。將csv列從時代轉換爲人類可讀分鐘

In [13]: print df.head() 

Time 
1481044277379 0.581858 
1481044277384 0.581858 
1481044277417 0.581858 
1481044277418 0.581858 
1481044277467 0.581858 

我已經嘗試了一些大熊貓功能,併爲整個列轉換的一些方法,我訪問了:Pandas docs,這question和涼爽site

我使用pandas 0.18.1

+0

一些reearch的我忘了提:我用熊貓0.18.1 ,我已閱讀:http://pandas.pydata.org/pandas-docs/version/0.18.1/timeseries.html http://stackoverflow.com/questions/12400256/python-converting-epoch-time-into-the-datetime - 但我不明白如何實現。 – Andrew

+0

此在線轉換提供了方法 - http://www.epochconverter.com/#code – Andrew

回答

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 
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 
+0

謝謝!這非常有幫助。 – Andrew

+0

@Andrew如果這回答你的問題,你可以接受答案並關閉問題,所以其他人看到它的解決。如果不是,請評論缺少的內容。 – ppasler

相關問題