我有一个如下所示的数据集:
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
...
我想将2012年2月2日的日期更改为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。总之,我想保持时间不变,并改变日期。原因是因为我有多个数据集,每个数据集代表一个设备的每日功率配置文件。我不关心日期,只关心时间。我想用相同的日期阅读所有这些内容以便同步它们。
答案 0 :(得分:2)
您可以先尝试转换为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
:
{{1}}