我有一个包含以下列的Excel文件,我将其读入pandas数据帧:
Year Month Day Hour
2012 1 1 0
2012 1 1 1
2012 1 1 2
2012 1 1 3`
我尝试使用以下代码将这3列组合成日期时间列:
df1 = df.assign(Dt = lambda row: datetime.datetime(row['Year'].astype(int), row['Month'].astype(int)...))
此代码提供以下错误:
Type Error: Cannot convert the series to (Type 'int')
我知道我可以将这些列组合成一个字符串,并使用strptime
转换为datetime
。但是我想在这里尝试理解我在分配和lambda方面做错了什么。
答案 0 :(得分:0)
您的所有列都经过适当命名,可直接在pd.to_datetime
df
df.assign(Dt=pd.to_datetime(df))
Year Month Day Hour Dt
0 2012 1 1 0 2012-01-01 00:00:00
1 2012 1 1 1 2012-01-01 01:00:00
2 2012 1 1 2 2012-01-01 02:00:00
3 2012 1 1 3 2012-01-01 03:00:00
简化为:
df.assign(Dt=pd.to_datetime)
您认为,每行不会调用一次传递的callable。