Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python ValueError:未转换的数据仍然存在:00_Python_Pandas_Datetime - Fatal编程技术网

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

Python ValueError:未转换的数据仍然存在:00,python,pandas,datetime,Python,Pandas,Datetime,我正在使用pd.to_datetime()方法将一列字符串转换为datetime对象 import pandas as pd import numpy as np main = pd.read_csv('correctedstats.csv', nrows = 50) main['Date'] = pd.to_datetime(main['Date'], format = '%d/%m/%y') 这给了我以下的错误- 回溯(最近一次调用上次):文件 “/Users/pranavmarla/j

我正在使用
pd.to_datetime()
方法将一列字符串转换为datetime对象

import pandas as pd import numpy as np

main = pd.read_csv('correctedstats.csv', nrows = 50) main['Date'] =
pd.to_datetime(main['Date'], format = '%d/%m/%y')
这给了我以下的错误-

回溯(最近一次调用上次):文件 “/Users/pranavmarla/jama/lib/python3.6/site packages/pandas/core/tools/datetimes.py”, 第448行,在convert_listlike_datetimes中 值,tz=conversion.datetime_to_datetime64(arg)文件“pandas/_libs/tslibs/conversion.pyx”,第200行,在 pandas._libs.tslibs.conversion.datetime_to_datetime64类型错误: 无法识别的值类型:

在处理上述异常期间,发生了另一个异常:

回溯(最近一次调用last):文件“mergeDates.py”,第8行,在 main['Date']=pd.to_datetime(main['Date'].astype(str),格式='%d/%m/%y')文件 “/Users/pranavmarla/jama/lib/python3.6/site packages/pandas/util/_decorators.py”, 第208行,在包装器中 return func(*args,**kwargs)文件“/Users/pranavmarla/jama/lib/python3.6/site packages/pandas/core/tools/datetimes.py”, 第778行,in to_datetime values=convert_listlike(arg._values,True,format)文件“/Users/pranavmarla/jama/lib/python3.6/site packages/pandas/core/tools/datetimes.py”, 第451行,在convert_listlike_datetimes中 raise文件“/Users/pranavmarla/jama/lib/python3.6/site packages/pandas/core/tools/datetimes.py”, 第416行,在convert_listlike_datetimes中 arg,format,exact=exact,errors=errors文件“pandas/_libs/tslibs/strtime.pyx”,第148行,in pandas._libs.tslibs.strtime.array_strtime value错误:未转换 数据显示:00

日期格式为“03/01/00”

如果按以下方式将日期文本输入函数,代码运行良好

pd.to_datetime('03/01/00', format = '%d/%m/%y')
我做错了什么

编辑-companystats.csv-

0          1.0             34.0  Asian Paints        15.90  INE021A01026    03/01/00
1          2.0             34.0  Asian Paints        16.06  INE021A01026    04/01/00
2          3.0             34.0  Asian Paints        15.96  INE021A01026    05/01/00
3          4.0             34.0  Asian Paints        15.73  INE021A01026    06/01/00
4          5.0             34.0  Asian Paints        16.07  INE021A01026    07/01/00
5          6.0             34.0  Asian Paints        17.29  INE021A01026    10/01/00
6          7.0             34.0  Asian Paints        17.30  INE021A01026    11/01/00
7          8.0             34.0  Asian Paints        17.40  INE021A01026    12/01/00
8          9.0             34.0  Asian Paints        17.45  INE021A01026  13/01/2000
9         10.0             34.0  Asian Paints        17.08  INE021A01026  14/01/2000
10        11.0             34.0  Asian Paints        17.14  INE021A01026  17/01/2000
11        12.0             34.0  Asian Paints        17.25  INE021A01026  18/01/2000
12        13.0             34.0  Asian Paints        17.47  INE021A01026  19/01/2000
13        14.0             34.0  Asian Paints        17.52  INE021A01026  20/01/2000
14        15.0             34.0  Asian Paints        17.74  INE021A01026  21/01/2000
15        16.0             34.0  Asian Paints        19.10  INE021A01026  24/01/2000
16        17.0             34.0  Asian Paints        20.61  INE021A01026  25/01/2000
17        18.0             34.0  Asian Paints        19.71  INE021A01026  27/01/2000
18        19.0             34.0  Asian Paints        20.03  INE021A01026  28/01/2000
19        20.0             34.0  Asian Paints        19.19  INE021A01026  31/01/2000
20        21.0             34.0  Asian Paints        19.18  INE021A01026    01/02/00
21        22.0             34.0  Asian Paints        19.17  INE021A01026    02/02/00
22        23.0             34.0  Asian Paints        19.00  INE021A01026    03/02/00
23        24.0             34.0  Asian Paints        19.03  INE021A01026    04/02/00
编辑-解决!“我的日期”列有两种类型的日期

2000年1月21日

02/02/00

我使用pd.to_datetime()方法的errors属性创建了两个独立的列,然后将它们合并为所需的列

pd.to_datetime(main,format = '%d/%m/%y', errors = 'coerce')


一个更优雅的解决方案将是受欢迎的

尝试将infer_datetime_格式传递为true,可能是在数据中,日期不是传递的格式

pd.to_datetime(df['Date'], infer_datetime_format=True) 
或传递错误='ignore'

pd.to_datetime(df['Date'], format = '%d/%m/%y',errors='ignore')

下面是一个很好的方法来查看函数失败的地方:

df = pd.DataFrame({'date': ['03/01/00','13/01/2000','00/01/00']})

def date_format(f):
    try:
        return pd.to_datetime(f)
    except Exception as e:
        return e.args

print(df['date'].apply(date_format))

0          2000-03-01 00:00:00
1          2000-01-13 00:00:00
2    (month must be in 1..12,)

您能否从
correctedstats.csv
发布样本数据?问题可能就在这里。我已经添加了它,请检查它。我尝试了这两种格式,推断格式只会给我错误的输出(月为天、天和月),忽略它会忽略所有行。如果可能,你可以共享示例数据吗。我已将其添加到帖子中,请检查它,因为我正在读取“%d/%m/%y”,并且我的所有字符串在该上下文中都有效,这将如何适用?它将向您显示函数在哪个索引处失败,即在我的示例中,它在索引2处失败,然后检查索引处的格式/类型以进一步调查失败
df = pd.DataFrame({'date': ['03/01/00','13/01/2000','00/01/00']})

def date_format(f):
    try:
        return pd.to_datetime(f)
    except Exception as e:
        return e.args

print(df['date'].apply(date_format))

0          2000-03-01 00:00:00
1          2000-01-13 00:00:00
2    (month must be in 1..12,)