【发布时间】:2019-05-17 12:56:19
【问题描述】:
我在使用 pd.to_datetime 将日月年列组合成数据框中的日期列时遇到问题。下面是我正在处理的数据框,Yr、Mo、Dy 列代表年月日。
data = pd.read_table("/ALabs/wind.data",sep = ',')
Yr Mo Dy RPT VAL ROS KIL
61 1 1 15.04 14.96 13.17 9.29
61 1 2 14.71 NaN 10.83 6.50
61 1 3 18.50 16.88 12.33 10.13
所以我尝试了以下代码,我收到以下错误:“组装映射需要至少指定 [年、月、日]:缺少 [日、月、年]”
第 1 步:
data['Date'] = pd.to_datetime(data[['Yr','Mo','Dy']],format="%y-%m-%d")
接下来,我尝试将 Yr、Mo、Dy 列数据类型从 int64 转换为 datetime64,并将结果分配给新列 Year、Month、Day。现在,当我尝试合并这些列时,我在新的日期列中得到了正确的日期格式,但我不知道我是如何得到想要的结果的。
第二步:
data['Year'] = pd.to_datetime(data.Yr,format='%y').dt.year
data['Month'] = pd.to_datetime(data.Mo,format='%m').dt.month
data['Day'] = pd.to_datetime(data.Dy,format ='%d').dt.day
data['Date'] =pd.to_datetime(data[['Year','Month','Day']])
结果:
Yr Mo Dy Year Month Day Date
61 1 1 2061 1 1 2061-01-01
61 1 2 2061 1 2 2061-01-02
61 1 3 2061 1 3 2061-01-03
61 1 4 2061 1 4 2061-01-04
但是,如果我尝试通过将列名从年、月、日更改为 Yy、Mh、Di 来执行相同的方法,如下面的代码所示。我收到同样的错误“组装映射至少需要指定 [年、月、日]:缺少 [日、月、年]”
第三步:
data['Yy'] = pd.to_datetime(data.Yr,format='%y').dt.year
data['Mh'] = pd.to_datetime(data.Mo,format='%m').dt.month
data['Di'] = pd.to_datetime(data.Dy,format ='%d').dt.day
data['Date'] =pd.to_datetime(data[['Yy','Mh','Di']])
我想知道的:
1) 如果我们使用 pd.to_datetime,参数名称是否必须为“年”“月”“日”?
2) 有没有其他方法可以将数据框中的列组合成日期,而不是使用这种长方法?
3) 这个错误是否只针对 python 3.7 版??
4)我在第 1 步和第 3 步中哪里出错了,为什么我在执行第 2 步时得到了 o/p?
【问题讨论】:
标签: python pandas datetime dataframe