2017-08-27 4 views
0

Ich versuche, einig Datums-Parser in Python zu tun und beim Parsen kam ich zu diesem seltsamen Fehler, sagteLibre Office Calc und Excel, die verschiedenen Wert

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

Als ich meine geprüft CSV-Datei in Libreoffice Alles sah gut aus. No nan Werte was auch immer. Aber als ich es in Excel überprüfte (Excel mobile Version. Da ich nicht zahlen möchte) sah ich anderen Wert. Ein Wert, der wie folgt

Libre Office Calc in anderen Editor gezeigt wurde - 11/09/93

excel - ########. Hier

ist ein Screenshot unten: enter image description here

Wie kann ich es in Libreoffice oder Python ändern, so dass es nicht so nan Werte behandelt werden, aber die wirklichen Werte, wie sie sein sollte.

Ich habe nicht viel Wissen in Excel und Libreoffice calc, so dass jede Erklärung, dieses einfache Problem zu lösen, willkommen wäre. Hier

ist der Python-Code

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) 

Fehler:

<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: Wenn die Frage ungeeignet scheint, als pro Kontext gegeben, können Sie sich frei, um es zu bearbeiten.

+1

die Breite der Spalte B –

+0

@MichaelO vergrößern. Ich habe ein neues Bild hochgeladen. Ich kann die Änderungsbreite der Spalte B in Excel nicht zulassen. Es lässt mich nichts ändern, da es eine mobile Version ist. Jedoch oben im Feld in fx können Sie den Wert der markierten Zelle sehen – Cybercop

+1

Das '#######' ist, weil der Wert nicht in die Zelle passt. Was Python betrifft, ist es vielleicht hilfreich, etwas Code zu veröffentlichen. –

Antwort

0

Um zu sehen, was passiert, verwenden Sie einen Texteditor wie Notepad ++. Das Anzeigen mit Excel oder Calc zeigt möglicherweise das Problem nicht an; zumindest kann das Problem nicht von den Bildern in der Frage gesehen werden.

Der Fehler tritt bei einer CSV-Datei auf, die aus den folgenden drei Zeilen besteht.

Date,Place 
28/08/93,Southampton 
,Newcastle 

Dies ist die Lösung, adaptiert von How to convert string to datetime with nulls - python, pandas?

season1993_94['Date'] = pd.to_datetime(season1993_94['Date'], errors='coerce') 

Das Ergebnis:

>>> season1993_94 
     Date  Place 
0 1993-08-28 Southampton 
1  NaT Newcastle 
Verwandte Themen