【发布时间】:2016-05-21 06:53:00
【问题描述】:
我想从数据框的多列创建日期时间索引。
由于需要转换日期时间输入,因此我在read_csv 中使用类似于date_parser 的date_parser。
我尝试在数据框行上应用解析器功能。但由于它没有矢量化,我得到了一个错误。
这是一个简化的例子:
data = """
2015;1;1;4
2015;1;2;4
2015;1;3;4
2015;1;4;4
2015;1;5;4
"""
import datetime as dt
import pandas as pd
from io import StringIO
df = pd.read_csv(StringIO(data), sep=';')
print (df)
def date_parser(year, month, day):
res = dt.datetime(year, month, day)
return res
df['dt'] = (myfunc(df.iloc[:,0], df.iloc[:,1], df.iloc[:,2]))
#or
df['dt'] = df.apply(myfunc(df.iloc[:,0], df.iloc[:,1], df.iloc[:,2]), axis=1)
TypeError: cannot convert the series to <class 'int'>
这个有效
def date_parser_s(y, m, d):
r = dt.datetime(y, m, d)
return r
string_form = df.apply(lambda r: date_parser_dt(r[0], r[1], r[2]), axis=1)
但这个不是:
string_form = df.apply(date_parser_dt(df[0], df[1], df[2]), axis=1)
您可以帮忙提供一个非 lambda 版本吗?
我将不胜感激。
【问题讨论】:
标签: datetime pandas indexing data-structures dataframe