Python—将月、日、年合并到日期列中

Python—将月、日、年合并到日期列中,python,pandas,Python,Pandas,我试图从多个列(年、月和日)中创建一个日期列,但是使用创建日期列的标准过程,我遇到了一些错误 import pandas as pd from urllib.request import urlopen url = "https://www.ndbc.noaa.gov/view_text_file.php?filename=42887h2017.txt.gz&dir=data/historical/stdmet/" data_csv = urlopen(url) df = pd.rea

我试图从多个列(年、月和日)中创建一个日期列,但是使用创建日期列的标准过程,我遇到了一些错误

import pandas as pd
from urllib.request import urlopen

url = "https://www.ndbc.noaa.gov/view_text_file.php?filename=42887h2017.txt.gz&dir=data/historical/stdmet/"
data_csv = urlopen(url)
df = pd.read_csv(data_csv, delim_whitespace=True, index_col=0, parse_dates=True)

#Reset Index
df.reset_index(level=0, inplace=True)

#remove 1st row contains erronous characters
df = df.iloc[1:]

#Rename Year column
df = df.rename(columns={'#YY': 'YY'})

df['Date'] = pd.to_datetime((df.YY*10000+df.MM*100+df.DD).apply(str),format='%Y%m%d') 
由于未创建日期列,最后一个命令无法正常工作。结果:


ValueError:未转换的数据仍然存在:4201420142020142020142020142020142020142020142020142020142020142020142020142020142020142020142020142020142020142020142020142020142020142020142020142021420142020142020142020142020142020142020142020142020140201

pd。如果正确命名,to\u datetime
可以自动解析多列中的日期(
“年”、“月”、“日”、“小时”、“分钟”

输出: 您还可以添加小时和分钟:

pd.to_datetime(df[['YY', 'MM', 'DD', 'hh', 'mm']].rename(
                columns={'YY': 'year', 'MM': 'month', 'DD': 'day',
                         'hh': 'hour', 'mm': 'minute'}))
#1      2017-01-02 06:00:00
#2      2017-01-02 06:20:00
#...
#2429   2017-03-05 01:40:00
#2430   2017-03-05 02:00:00

您好,我继续遇到此错误(在添加小时和分钟时):
ValueError:无法组合datetimes[hour]:数据类型“datetime”不理解
。是因为我在使用Python3吗?@Starbucks,我相信这是
numpy
pandas
的特定组合的问题。这似乎在新版本中得到了修复。你正在运行哪些版本的
numpy
pandas
呢?你能更新吗?两者都是最新的。numpy 1.15.2和pandas 0.23.4您是否更改了关于小时列的内容?什么是
df.dtypes['hh']
1      2017-01-02
2      2017-01-02
3      2017-01-02
4      2017-01-02
5      2017-01-02
...
2427   2017-03-05
2428   2017-03-05
2429   2017-03-05
2430   2017-03-05
pd.to_datetime(df[['YY', 'MM', 'DD', 'hh', 'mm']].rename(
                columns={'YY': 'year', 'MM': 'month', 'DD': 'day',
                         'hh': 'hour', 'mm': 'minute'}))
#1      2017-01-02 06:00:00
#2      2017-01-02 06:20:00
#...
#2429   2017-03-05 01:40:00
#2430   2017-03-05 02:00:00