python - pandas csv 阅读器中的日期转换

标签 python csv pandas converters

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=”。示例代码正确地执行了操作,只是没有以所需的方式执行。帮助将不胜感激。

最佳答案

使用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

关于python - pandas csv 阅读器中的日期转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15465087/

相关文章:

python matplotlib 颜色图也被后续绘图继承

python - 如何使脚本仅在半小时内每小时激活一次?

python - 使用 python 更改线程中的对象值

python - 自创建模块用于异步导入

Python 选择带有 * 的列加上另一列

python - 如何处理 pandas fillna 中的 `None` 值

python - 在数据框列中抑制科学格式

scala - spark csv读取速度很慢,虽然我增加了节点数

java - 在java中按升序对csv文件中的一列数据进行排序

vb.net - 通过 foreach 语句更改数组的值 VB.net