1
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 =」を追加する方法がわかりません。サンプル コードは操作を正しく実行しますが、望ましい方法ではありません。助けていただければ幸いです。

4

1 に答える 1

4

パラメータを使用しdate_parserます。通常、デフォルトはですが、日付文字列を解析するだけでなく も追加するdateutil.parser.parseカスタム関数 (以下の など) を指定できます。addtimetimedelta

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
于 2013-03-17T19:36:02.820 に答える