使用date_解析器函数构造datetime索引列
我想从数据帧的多个列创建一个日期时间索引 由于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
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]