Datetime 即使使用dayfirst参数,XLDATE也会出现不明确错误
我正在尝试将数据从excel电子表格导入到pandas dataframe对象中。我使用的是dayfirst,但仍然出现错误 日期以1990年9月25日的格式在一列中 有人能给我解释一下为什么会发生这种情况,以及我如何解决它吗?提前谢谢 编辑:似乎问题是由xlrd试图将非日期列解析为日期引起的,尽管我已经指定了日期所在的列。不幸的是,我不知道如何明确指出列不应被解析为日期。有人有什么想法吗Datetime 即使使用dayfirst参数,XLDATE也会出现不明确错误,datetime,python-2.7,pandas,Datetime,Python 2.7,Pandas,我正在尝试将数据从excel电子表格导入到pandas dataframe对象中。我使用的是dayfirst,但仍然出现错误 日期以1990年9月25日的格式在一列中 有人能给我解释一下为什么会发生这种情况,以及我如何解决它吗?提前谢谢 编辑:似乎问题是由xlrd试图将非日期列解析为日期引起的,尽管我已经指定了日期所在的列。不幸的是,我不知道如何明确指出列不应被解析为日期。有人有什么想法吗 import pandas as pd import matplotlib.pyplot as plt f
import pandas as pd
import matplotlib.pyplot as plt
from datetime import datetime
import dateutil
path6 = 'C:\\Users\\Site2_Homepage_2013-06-04.xlsx'
df8 = pd.io.excel.read_excel(path6, 'Site2_Homepage_2012_06_13', header=1, parse_dates=True, dayfirst=True)
XLDateAmbiguous Traceback (most recent call last)
<ipython-input-17-4a83d104ab72> in <module>()
4 path7 = 'C:\\Users\\Site4_Homepage_2013-06-04.xlsx'
5 path8 = 'C:\\Users\\Site7_Homepage_2013-06-04.xlsx'
----> 6 df8 = pd.io.excel.read_excel(path6, 'Site2_Homepage_2012_06_13', header=1, parse_dates=True, dayfirst=True)
7 df9 = pd.io.excel.read_excel(path7, 'Site4_Homepage_2012_06_13', header=1, parse_dates=[3], dayfirst=True)
8 df10 = pd.io.excel.read_excel(path8, 'Site7_Homepage_2012_06_13', header=1, parse_dates=[3], dayfirst=True)
C:\Users\AppData\Local\Enthought\Canopy32\User\lib\site-packages\pandas\io\excel.pyc in read_excel(io, sheetname, **kwds)
101 engine = kwds.pop('engine', None)
102
--> 103 return ExcelFile(io, engine=engine).parse(sheetname=sheetname, **kwds)
104
105
C:\Users\AppData\Local\Enthought\Canopy32\User\lib\site-packages\pandas\io\excel.pyc in parse(self, sheetname, header, skiprows, skip_footer, index_col, parse_cols, parse_dates, date_parser, na_values, thousands, chunksize, convert_float, has_index_names, **kwds)
206 skip_footer=skip_footer,
207 convert_float=convert_float,
--> 208 **kwds)
209
210 def _should_parse(self, i, parse_cols):
C:\Users\AppData\Local\Enthought\Canopy32\User\lib\site-packages\pandas\io\excel.pyc in _parse_excel(self, sheetname, header, skiprows, skip_footer, index_col, has_index_names, parse_cols, parse_dates, date_parser, na_values, thousands, chunksize, convert_float, **kwds)
267 if parse_cols is None or should_parse[j]:
268 if typ == XL_CELL_DATE:
--> 269 dt = xldate_as_tuple(value, datemode)
270 # how to produce this first case?
271 if dt[0] < datetime.MINYEAR: # pragma: no cover
C:\Users\AppData\Local\Enthought\Canopy32\User\lib\site-packages\xlrd\xldate.pyc in xldate_as_tuple(xldate, datemode)
78
79 if xldays < 61 and datemode == 0:
---> 80 raise XLDateAmbiguous(xldate)
81
82 jdn = xldays + _JDN_delta[datemode]
XLDateAmbiguous: 15.3
我没有找到解决这个问题的办法。最后,我不得不使用.csv版本的文件来正确解析日期。能否显示整个错误/stacktrace。有时我发现只导出到csv更容易…@AndyHayden我添加了完整的堆栈跟踪。你的意思是我应该将.xlsx转换为.csv吗?看起来在你试图解析为日期的列中有数字15.3?@AndyHayden我没有意识到这是抛出错误的值。我已经检查了表格,15.3只出现在第5列。所以我完全搞不懂为什么要将该列解析为日期列。@Bprodz因为Excel中的日期存储为浮点数-请参阅标题下库作者的解释,并查看其中的详细信息。。。这可能是因为pandas没有正确使用datemode,因此出现了例外。。。但我对熊猫的代码库不太熟悉。。。