【问题标题】:Change default date on date_parser of Pandas on Python在 Python 上更改 Pandas 的 date_parser 的默认日期
【发布时间】:2016-06-15 22:41:23
【问题描述】:

我有一个如下所示的数据集:

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。简而言之,我想保持时间不变,并更改日期。原因是我有多个数据集,每个数据集都代表一个设备的每日电源配置文件。我不在乎日期,只在乎时间。我想在同一日期阅读所有这些以同步它们。

【问题讨论】:

    标签: python date pandas time


    【解决方案1】:

    您可以尝试先转换为to_datetime,然后在date_parser 中转换为replace

    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
    

    【讨论】:

      猜你喜欢
      • 2011-03-09
      • 2016-01-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-03
      • 1970-01-01
      • 2020-11-12
      相关资源
      最近更新 更多