Strptime没有做我(开始Python数据科学家)想要它做的事情。我有一个格式如下的数据文件:
STN,YYYYMMDD,HH,RH
210,20121001,1,0
210,20121001,2,0
210,20121001,3,0
210,20121001,4,0
...
在第二列中,日期,在观察的第三小时(1-24)。我想以日期时间格式获取日期和时间以将其与其他数据合并。我的尝试:
import pandas as pd
from datetime import datetime
meteo = pd.read_csv("x:\\hourly.txt", parse_dates=[[1,2]])
# dataframe created with a column 'YYYYMMDD_HH'
meteo['datetime']=meteo['YYYYMMDD_HH'].apply(lambda x: datetime.strptime(x,'%Y%m%d %H'))
Python在最后一行崩溃了(对我来说)非常神秘的错误:
Traceback (most recent call last):
File "X:\test.py", line 11, in <module>
meteo['datetime']=meteo['YYYYMMDD_HH'].apply(lambda x: datetime.strptime(x,'%Y%m%d %H'))
File "C:\Program Files\Anaconda3\lib\site-packages\pandas\core\series.py", line 1998, in apply
mapped = lib.map_infer(values, f, convert=convert_dtype)
File "inference.pyx", line 1016, in pandas.lib.map_infer (pandas\lib.c:53184)
File "X:\test.py", line 11, in <lambda>
meteo['datetime']=meteo['YYYYMMDD_HH'].apply(lambda x: datetime.strptime(x,'%Y%m%d %H'))
File "C:\Program Files\Anaconda3\lib\_strptime.py", line 500, in _strptime_datetime
tt, fraction = _strptime(data_string, format)
File "C:\Program Files\Anaconda3\lib\_strptime.py", line 340, in _strptime
data_string[found.end():])
ValueError: unconverted data remains: 4
我做错了什么? 在此先感谢您的帮助, 尼尔斯
答案 0 :(得分:0)
读取CSV文件时解析列。
import pandas as pd
from datetime import datetime
parse = lambda x: datetime.strptime(x, '%Y%m%d %H')
df = pd.read_csv("time.csv", parse_dates = [['YYYYMMDD', 'HH']], date_parser=parse)
print df
输出:
YYYYMMDD_HH STN RH
0 2012-10-01 01:00:00 210 0
1 2012-10-01 02:00:00 210 0
2 2012-10-01 03:00:00 210 0
3 2012-10-01 04:00:00 210 0
答案 1 :(得分:0)
经过大量调试后,我自己解决了这个问题....数据文件包含1..24的小时数。当小时 24 时,解析会引发错误。它接受0..23的小时。我想我必须先重新格式化数据文件!
感谢您的回复。