Libre office calc和excel显示出不同的价值

时间:2017-08-27 14:28:24

标签: python excel csv data-cleaning libreoffice-calc

我正在尝试在python中进行一些日期解析,而在解析时我遇到了这个奇怪的错误,说

time data 'nan' does not match format '%d/%m/%y'

当我在libreoffice calc中检查我的 .csv 文件时,一切看起来都很好。没有 nan 的价值观。然而,当我在excel中检查它时(excel移动版。因为我不想付钱),我看到了不同的价值。在不同的编辑器中显示如下的值

Libre office calc - 11/09/93

excel - ########

以下是截图: enter image description here

我如何在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:如果问题看起来不合适,请随时编辑。

1 个答案:

答案 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