Python 熊猫的日期解析
所以我需要读取一个包含日期和数值的csv文件,格式如下:Python 熊猫的日期解析,python,pandas,Python,Pandas,所以我需要读取一个包含日期和数值的csv文件,格式如下:2017-01-01 00:00:00,-350.7866656 这是我的密码: def parser(x): return datetime.strptime(x, '%Y-%m-%d %H:%M:%S') df = rea
2017-01-01 00:00:00,-350.7866656
这是我的密码:
def parser(x):
return datetime.strptime(x, '%Y-%m-%d %H:%M:%S')
df = read_csv('filename', header=None, parse_dates=[0], index_col=0,
squeeze=True, date_parser=parser)
print(df.head())
我得到的是一个错误:ValueError:未转换的数据仍然存在:,-350.7866656
据我所知,该程序将字符串视为一列而不是两列,并尝试解析整个字符串,而不是带有日期的第一列。如何修复此问题,使其将csv文件读入两列?在我看来,问题是您可能有一些错误的日期值,无法用单个
datetime
格式解析。相反,将try except
语句添加到解析器
函数:
import pandas as pd
import numpy as np
from datetime import datetime, time
temp=u"""2015-01-04 12:04:10,10
2018-01-10 18:40:12,20
-350.7866656,20"""
def parser(x):
try:
return datetime.strptime(x, '%Y-%m-%d %H:%M:%S')
except ValueError:
return np.nan
#after testing replace 'pd.compat.StringIO(temp)' to 'filename.csv'
df = pd.read_csv(pd.compat.StringIO(temp), header=None, parse_dates=[0], index_col=0,
squeeze=True, date_parser=parser)
print (df)
0
2015-01-04 12:04:10 10
2018-01-10 18:40:12 20
NaT 20
Name: 1, dtype: int64
print (df.index)
DatetimeIndex(['2015-01-04 12:04:10', '2018-01-10 18:40:12', 'NaT'], dtype='datetime64[ns]', name=0, freq=None)
我查阅了文件。已设置为0
的参数index\u col
正在将文件中的日期列设置为索引。在我看来,删除该参数将产生所需的结果,即在两列中读取CSV
干杯 谢谢你的回答。您的解决方案出现的问题是,它只是将所有内容都转换为NaT。您的代码似乎一切正常,我不明白出了什么问题。@John Doe csv是保密的吗?如果没有,你能在我的个人资料中将其发送到我的电子邮件吗?因为这似乎是一些数据相关的问题。