2016-07-06 51 views
0

我想合併&附加不同的時間序列,從csv文件導入它們。我曾嘗試以下基本代碼:如何索引從導入的CSV文件的日期時間列 - pandas

import pandas as pd 
import numpy as np 
import glob 
import csv 
import os 

path = r'./A08_csv'  # use your path 
#all_files = glob.glob(os.path.join(path, "A08_B1_T5.csv")) 

df5 = pd.read_csv('./A08_csv/A08_B1_T5.csv', parse_dates={'Date Time'}) 
df6 = pd.read_csv('./A08_csv/A08_B1_T6.csv', parse_dates={'Date Time'}) 

print len(df5) 
print len(df6) 

df = pd.concat([df5],[df6], join='outer') 
print len(df) 

,其結果是:

12755 (df5) 
24770 (df6) 
12755 (df) 

應該不是隻要df,可以是國內最長的兩個文件(其中有很多共同點行的,在['Date Time']列中的值的條款)??

我試圖指數基於日期時間的數據,加入這一行:

#df5.set_index(pd.DatetimeIndex(df5['Date Time'])) 

但是我收到的錯誤:

KeyError: 'Date Time' 

爲什麼發生這種情況的任何線索?

回答

1

我想你需要:

df5.set_index(['Date Time'], inplace=True) 

或者在read_csv附加參數index_col更好:

import pandas as pd 
import io 

temp=u"""Date Time,a 
2010-01-27 16:00:00,2.0 
2010-01-27 16:10:00,2.2 
2010-01-27 16:30:00,1.7""" 

df = pd.read_csv(io.StringIO(temp), index_col=['Date Time'], parse_dates=['Date Time']) 
print (df) 
         a 
Date Time    
2010-01-27 16:00:00 2.0 
2010-01-27 16:10:00 2.2 
2010-01-27 16:30:00 1.7 

print (df.index) 
DatetimeIndex(['2010-01-27 16:00:00', '2010-01-27 16:10:00', 
       '2010-01-27 16:30:00'], 
       dtype='datetime64[ns]', name='Date Time', freq=None) 

另一種解決方案是增加PARAMATERS列的順序 - 如果列Date Time是第一個,將0添加到index_colparse_dates(python count from 0):

import pandas as pd 
import io 


temp=u"""Date Time,a 
2010-01-27 16:00:00,2.0 
2010-01-27 16:10:00,2.2 
2010-01-27 16:30:00,1.7""" 

df = pd.read_csv(io.StringIO(temp), index_col=0, parse_dates=[0]) 
print (df) 
         a 
Date Time    
2010-01-27 16:00:00 2.0 
2010-01-27 16:10:00 2.2 
2010-01-27 16:30:00 1.7 

print (df.index) 
DatetimeIndex(['2010-01-27 16:00:00', '2010-01-27 16:10:00', 
       '2010-01-27 16:30:00'], 
       dtype='datetime64[ns]', name='Date Time', freq=None) 
+0

謝謝。 代碼'df5 = pd.read_csv('./ A08_csv/A08_B1_T5.csv',index_col = ['Date Time'],parse_dates = ['Date Time'])'returns'ValueError:'Date Time'is not in列表' – Andreuccio

+0

你是否仍然需要從'Date Time'列設置索引?或者現在沒有必要? – jezrael

+1

如果需要,'df5 = pd.read_csv('./ A08_csv/A08_B1_T5.csv',parse_dates = ['Date Time'])'print df.dtypes'後面是什麼? – jezrael

0

這是不正確的:

pd.concat([df5],[df6], join='outer') 

的第二個參數concataxis。相反,你想:

pd.concat([df5, df6], join='outer') 
相關問題