2016-03-02 3 views
1

У меня есть набор данных, который выглядит следующим образом:Изменение даты по умолчанию на date_parser панд на Python

refrigerator.csv 
08/02/2012 00:00:02;136;134 
08/02/2012 00:00:03;134;134 
08/02/2012 00:00:05;136;134 
08/02/2012 00:00:06;136;134 
08/02/2012 00:00:08;134;134 
08/02/2012 00:00:09;134;134 
... 

Я хотел бы изменить дату, которая всегда 08/02/2012 к 01.01.2010. Я попытался сделать следующее:

import pandas as pd 
refr=pd.read_csv('C:/refrigerator.csv', names=['ts', 'P1', 'P2'], 
        sep=';', parse_dates=[0], index_col=0, 
        date_parser=lambda x: pd.Timestamp('2010-01-01 %s' %x)) 

Но я получаю ValueError. Короче говоря, я хотел бы сохранить время как есть, и изменить дату. Причина в том, что у меня есть несколько наборов данных, и каждый из них представляет собой дневной профиль мощности устройства. Меня не интересует дата, только время. Я хотел бы прочитать их все с той же датой, чтобы их синхронизировать.

ответ

2

Вы можете попробовать сначала преобразовать в to_datetime и затем replace в date_parser:

import pandas as pd 
import io 

temp=u""" 
08/02/2012 00:00:02;136;134 
08/02/2012 00:00:03;134;134 
08/02/2012 00:00:05;136;134 
08/02/2012 00:00:06;136;134 
08/02/2012 00:00:08;134;134 
08/02/2012 00:00:09;134;134""" 


#after testing replace io.StringIO(temp) to filename 
df =pd.read_csv(io.StringIO(temp), names=['ts', 'P1', 'P2'], 
        sep=';', parse_dates=[0], index_col=0, 
        date_parser=lambda x: pd.to_datetime(x).replace(year=2010, month=1,day=1)) 

print df 
         P1 P2 
ts       
2010-01-01 00:00:02 136 134 
2010-01-01 00:00:03 134 134 
2010-01-01 00:00:05 136 134 
2010-01-01 00:00:06 136 134 
2010-01-01 00:00:08 134 134 
2010-01-01 00:00:09 134 134 
+0

Спасибо большое! Это сработало отлично! – user3423639

Смежные вопросы