使用date_解析器函数构造datetime索引列

使用date_解析器函数构造datetime索引列,datetime,pandas,indexing,data-structures,dataframe,Datetime,Pandas,Indexing,Data Structures,Dataframe,我想从数据帧的多个列创建一个日期时间索引 由于datetime输入需要转换,我使用了一个类似于中的date\u解析器的date\u解析器 我试图对数据帧行应用解析器函数。但由于它不是矢量化的,我得到了一个错误 下面是一个简化的示例: 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 Strin

我想从数据帧的多个列创建一个日期时间索引

由于datetime输入需要转换,我使用了一个类似于中的
date\u解析器的
date\u解析器

我试图对数据帧行应用解析器函数。但由于它不是矢量化的,我得到了一个错误

下面是一个简化的示例:

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'>
但这一个不是:

string_form = df.apply(date_parser_dt(df[0], df[1], df[2]), axis=1)
请您帮我翻译一个非lambda版本


如果您能提供帮助,我将不胜感激。

因为该函数是为数据帧中的每一行调用的,所以请将一行作为其参数:

def date_parser(ymd):
   return dt.datetime(ymd[0], ymd[1], ymd[2])

data = '''year;month;day;stuff
2015;1;1;4
2015;1;2;4
2015;1;3;4
2015;1;4;4
2015;1;5;4
'''

df = pd.read_csv(io.StringIO(data), sep=';')
df.apply(date_parser, axis=1)

0   2015-01-01
1   2015-01-02
2   2015-01-03
3   2015-01-04
4   2015-01-05
dtype: datetime64[ns]
def date_parser(ymd):
   return dt.datetime(ymd[0], ymd[1], ymd[2])

data = '''year;month;day;stuff
2015;1;1;4
2015;1;2;4
2015;1;3;4
2015;1;4;4
2015;1;5;4
'''

df = pd.read_csv(io.StringIO(data), sep=';')
df.apply(date_parser, axis=1)

0   2015-01-01
1   2015-01-02
2   2015-01-03
3   2015-01-04
4   2015-01-05
dtype: datetime64[ns]