我正在尝试在python中进行一些日期解析,而在解析时我遇到了这个奇怪的错误,说
time data 'nan' does not match format '%d/%m/%y'
当我在libreoffice calc中检查我的 .csv 文件时,一切看起来都很好。没有 nan 的价值观。然而,当我在excel中检查它时(excel移动版。因为我不想付钱),我看到了不同的价值。在不同的编辑器中显示如下的值
Libre office calc - 11/09/93
excel - ########
。
我如何在LibreOffice或python中更改它,以便它不会被视为nan值,但它们应该是真实的值。
我对excel和Libreoffice calc没有太多了解,因此欢迎解决这个简单问题的任何解释。
这是python代码
import pandas as pd
from datetime import datetime as dt
loc = "C:/Data/"
season1993_94 = pd.read_csv(loc + '1993-94.csv')
def parse_date_type1(date):
if date == '':
return None
return dt.strptime(date, '%d/%m/%y').date()
def parse_date_type2(date):
if date == '':
return None
return dt.strptime(date, '%d/%m/%Y').date()
season1993_94.Date = season1993_94.Date.astype(str).apply(parse_date_type1)
错误:
<ipython-input-13-46ff7e1afe94> in <module>()
----> 1 season1993_94.Date = season1993_94.Date.astype(str).apply(parse_date_type1)
ValueError: time data 'nan' does not match format '%d/%m/%y'
PS:如果问题看起来不合适,请随时编辑。
答案 0 :(得分:0)
要查看发生了什么,请使用Notepad ++等文本编辑器。使用Excel或Calc查看可能无法显示问题;至少,问题中的图像无法看出问题。
包含以下三行的CSV文件发生错误。
Date,Place
28/08/93,Southampton
,Newcastle
以下是根据How to convert string to datetime with nulls - python, pandas?
改编的解决方案season1993_94['Date'] = pd.to_datetime(season1993_94['Date'], errors='coerce')
结果:
>>> season1993_94
Date Place
0 1993-08-28 Southampton
1 NaT Newcastle