2015-11-17 112 views
0

我得到了這樣的數據:熊貓:read_csv只有HH:MM:在指數SS

Time;Flare;Praia;Spot2;Ruido 
17:10:08.325;1.04;1.066;1.068;1.05 
17:10:09.326;1.036;1.059;1.069;1.051 
17:10:10.327;1.038;1.061;1.077;1.063 
17:10:11.328;1.033;1.055;1.068;1.051 

我讀使用文件:

df = pd.read_csv(path + 'prueba.txt', sep=';',index_col=0,infer_datetime_format=True, 
         names=['time','flare','praia','spot','ruido'],header=1) 

結果是

   flare praia spot ruido 
time          
17:10:09.326 1.036 1.059 1.069 1.051 
17:10:10.327 1.038 1.061 1.077 1.063 
17:10:11.328 1.033 1.055 1.068 1.051 
17:10:12.329 1.041 1.057 1.075 1.049 

您可以注意到索引時間沒有日期(僅HH:MM:SS),並且生成的索引不是datetime-type。

type(df.index) 
pandas.core.index.Index 

我試圖使用pd.to_datetime沒有成功。 如果我必須添加日期,該怎麼辦?

+0

應該最終的結果是什麼樣的?你想'df'有一個DatetimeIndex?這是可能的,但熊貓將用當前日期填寫缺失的日期(默認情況下)。或者你想要一個TimedeltaIndex?要麼...? – unutbu

+0

最初的數據沒有日期(只有HHMMSS),當我讀到它時,就像我顯示的那樣,所以在最終結果中它沒有關係日期(如果我可以添加它)。我在考慮使用'infer_datetime_format = True'時,索引將採用日期時間格式(YYMMDD(today)HHMMSS) – nandhos

回答

1

爲了獲得DatetimeIndex,使用parse_dates=[0]

df = pd.read_csv('data', sep=';', 
       names=['time','flare','praia','spot','ruido'], header=1, 
       index_col=0, parse_dates=[0]) 

產生

In [45]: df 
Out[45]: 
         flare praia spot ruido 
time            
2015-11-17 17:10:09.326 1.036 1.059 1.069 1.051 
2015-11-17 17:10:10.327 1.038 1.061 1.077 1.063 
2015-11-17 17:10:11.328 1.033 1.055 1.068 1.051 

In [46]: df.index 
Out[46]: 
DatetimeIndex(['2015-11-17 17:10:09.326000', '2015-11-17 17:10:10.327000', 
       '2015-11-17 17:10:11.328000'], 
       dtype='datetime64[ns]', name=u'time', freq=None, tz=None) 

注意,當前日期被默認提供。


要獲得TimedeltaIndex,你可以省略parse_dates參數和轉換HH:MM:SS字符串後:

df = pd.read_csv('data', sep=';', 
       names=['time','flare','praia','spot','ruido'], header=1, 
       index_col=0) 
df.index = pd.TimedeltaIndex(df.index) 

產量

In [54]: df 
Out[54]: 
       flare praia spot ruido 
17:10:09.326000 1.036 1.059 1.069 1.051 
17:10:10.327000 1.038 1.061 1.077 1.063 
17:10:11.328000 1.033 1.055 1.068 1.051 

In [55]: df.index 
Out[55]: TimedeltaIndex(['17:10:09.326000', '17:10:10.327000', '17:10:11.328000'], dtype='timedelta64[ns]', freq=None)