2017-12-27 431 views
0

你好,我有這樣的數據幀:日期時間Unix向ISO大熊貓

TimeStamp  low  high  open  close  volume 
0 1514331900 15699.54 15800.00 15699.55 15790.88 62.675508 
1 1514331000 15651.57 15745.80 15662.01 15699.54 83.040542 
2 1514330100 15661.00 15820.01 15820.01 15662.00 67.716571 
3 1514329200 15780.00 15856.00 15780.01 15820.00 41.608696 
4 1514328300 15780.00 15867.01 15789.98 15780.00 50.103055 
5 1514327400 15719.00 15856.99 15856.99 15789.99 120.660673 

我設置時間戳指數

df.set_index('TimeStamp') 

我得到

    low  high  open  close  volume 
TimeStamp              
1514331900 15699.54 15800.00 15699.55 15790.88 62.675508 
1514331000 15651.57 15745.80 15662.01 15699.54 83.040542 
1514330100 15661.00 15820.01 15820.01 15662.00 67.716571 
1514329200 15780.00 15856.00 15780.01 15820.00 41.608696 
1514328300 15780.00 15867.01 15789.98 15780.00 50.103055 

現在我想的時間戳轉換爲ISO可讀的DateTime。 所以我用熊貓庫

df.index = pd.to_datetime(df.index, unit='s') 

但我沒有得到預期的日期時間,我得到這個:

     TimeStamp  low  high  open  close \ 
1970-01-01 00:00:00 1514331900 15699.54 15800.00 15699.55 15790.88 
1970-01-01 00:00:01 1514331000 15651.57 15745.80 15662.01 15699.54 
1970-01-01 00:00:02 1514330100 15661.00 15820.01 15820.01 15662.00 
1970-01-01 00:00:03 1514329200 15780.00 15856.00 15780.01 15820.00 
1970-01-01 00:00:04 1514328300 15780.00 15867.01 15789.98 15780.00 

這不是正確的形式,因爲如果我這樣做:

>>> pd.to_datetime(1514331900, unit='s') 
Timestamp('2017-12-26 23:45:00') 

我得到準確的日期。

我在做什麼錯?

+0

我不能d重複你的問題。你使用的是什麼版本的熊貓? –

+0

0.21.1 它適合你嗎? – hopieman

+3

這是一個'inplace'與'copy'問題。您需要將'df.set_index('TimeStamp')'分配給'df'。基本上,'df = df.set_index('TimeStamp')'或使用'inplace':'df.set_index('TimeStamp',inplace = True)''。否則,你將'range(len(df))'轉換爲datetime對象。 – Abdou

回答

0

問題解決。

功能

df.set_index('TimeStamp') 

真正改變它需要像做數據框:

df = df.set_index('TimeStamp') 

df.set_index('TimeStamp', inplace=True) 

否則我們只是轉換LEN