【问题标题】:Date conversion in pandas csv readerpandas csv阅读器中的日期转换
【发布时间】:2013-03-06 02:19:12
【问题描述】:
from StringIO import StringIO
import datetime as dt
import pandas as pd

def addtime(temp):
    temp = (temp) + (dt.timedelta(hours  =16))
    return(temp)

data = """\
    '12-31-2012',5100, 5200
    '01/1/2013',5300,5400"""

tdata = pd.read_csv(StringIO(data),
    names =    ['date', 'field1', 'field'], index_col = None,
    parse_dates =['date'], header= None)

print tdata

old_date = tdata.ix[0,'date']
print 'old date =',old_date
new_date = addtime(old_date)
print 'new date =',new_date

#                 date  field1  field
#0  2012-12-31 00:00:00    5100   5200
#1  2013-01-01 00:00:00    5300   5400
#old date = 2012-12-31 00:00:00
#new date = 2012-12-31 16:00:00

作为 Pandas CSV 阅读器的一部分,我想为每个日期添加 16 小时。但我不知道如何添加有效的“parse_dates=”。示例代码正确地执行操作,只是不是以所需的方式。帮助将不胜感激。

【问题讨论】:

    标签: python csv pandas converter


    【解决方案1】:

    使用date_parser 参数。通常,默认为dateutil.parser.parse,但您可以指定一个自定义函数(例如下面的addtime),它不仅可以解析日期字符串,还可以添加timedelta。

    from StringIO import StringIO
    import datetime as dt
    import pandas as pd
    import dateutil.parser as parser
    
    def addtime(temp):
        temp = parser.parse(temp) + dt.timedelta(hours=16)
        return temp
    
    data = """\
        '12-31-2012',5100, 5200
        '01/1/2013',5300,5400"""
    
    tdata = pd.read_csv(StringIO(data),
        names = ['date', 'field1', 'field'], index_col = None,
        parse_dates =['date'], header= None, date_parser=addtime)
    
    print tdata
    

    产量

                      date  field1  field
    0  2012-12-31 16:00:00    5100   5200
    1  2013-01-01 16:00:00    5300   5400
    

    【讨论】:

    • 谢谢,我没有为您添加到 addtime 的解析器语句获取/使用正确的格式。
    猜你喜欢
    • 1970-01-01
    • 2018-06-05
    • 2017-08-14
    • 2018-12-07
    • 2020-12-11
    • 2018-10-12
    • 2023-02-20
    • 1970-01-01
    • 2022-06-28
    相关资源
    最近更新 更多