2017-03-03 2 views
-3

Ich habe einige Daten in der CSV-Datei, die einige Einträge im Format MM/DD/YYYY und einige Einträge im Format DD-MM-YYYY hat. Ich möchte diese Spalte von Einträgen lesen und sie als neue Spalte in einem Pandas-Datenrahmen speichern? Wie würde ich darüber gehen?Konvertieren von MM/TT/JJJJ in TT-MM-JJJ

Beispiel:

Entry  Sampling Date 
    1   01-10-2004 
    2   01-13-2004 
    3   16/1/2004 

Ich mag würde die ersten beiden Reihen Datumsformat, das die in der dritten Reihe konvertieren.

+0

'.replace ("/", "-")'? – WhatsThePoint

+1

@WhatsThePoint: und tauschen Sie den Monat und den Tag. –

+0

@MartijnPieters ja, ich verpasst das – WhatsThePoint

Antwort

1

Verwenden Sie das datetime Modul, eine Funktion definieren und es dann auf Ihre Spalte anwenden

import datetime.datetime 

def read_date(string): 
    if '/' in entry: 
     date = datetime.datetime.strptime(string,'%m/%d/%Y') 
    elif '-' in entry: 
     date = datetime.datetime.strptime(string, '%d-%m-%Y') 
    return date 

# If df is your dataframe 
df['newdate'] = df['Sampling Date'].apply(read_date) 
+0

Ich denke, das wird funktionieren. Wie ich bereits in der obigen Anmerkung erwähnt habe, wird das Jahr nicht vollständig erwähnt, der 3. Januar 2004 wird als 03-01-04 geschrieben. Das gibt mir Fehler. – Raghuram

+0

Das ist nicht, was Sie in Ihrem Beispiel gezeigt haben ... dann ersetzen Sie einfach% Y durch% y und das wird den Trick machen. Offensichtlich, wenn Sie einige Zeilen mit gekürzten Jahr und andere mit Jahr in voller Länge haben, müssen Sie eine If-Klausel machen, um zu wählen, welche Art zu analysieren – LoicM

+0

Ja, ich realisiere, dass ist nicht, was ich in dem Beispiel gezeigt. Mein Fehler. Danke für die Antwort. Es funktioniert jetzt – Raghuram