2016-05-18 5 views
0

Ich lerne Python mit Pycharm. Ich versuche, eine Funktion zu schreiben, um verschiedene Datumsformate in 1 Datumsformat zu konvertieren. Insbesondere möchte ich der Funktion mitteilen, welches Format sie hat und welches Format ich haben möchte, und sie kann diese Funktion für zukünftige Datensätze verwenden. Ich habe es mit ziemlich großen Datensätzen zu tun (20 GB für jetzt, aber später an einem 200 GB-Datensatz).schreiben Sie eine Funktion zum Konvertieren verschiedener Datumsformate in Python

bisher habe ich das versucht:

import csv 
df = csv.DictReader(open('dataset.csv')) 

def format_date(df, dateformat): 
    """this will format the column containing dates'""" 
    for row in df: 
     row['Date'] = datetime.datetime.strptime(row['Date'], '%Y%m%d') 
     csv.DictWriter(str(df)+'_converted.csv', data) 
     return 

so weit ich weiß, dass diese Funktion,

(row['Date'] = datetime.datetime.strptime(row['Date'], '%Y%m%d')) 

Werke als ich versuchte, es zu drucken. Wie schreibe ich jedoch alle diese Zeilen mit der aktualisierten "Date" Spalte in eine neue CSV-Datei? und ist es eine Möglichkeit, für, sagen wir in der Zukunft, kann ich es nur das Format des unerwünschten Zeitpunkt (dh format_date(df,yyyy/mm/yy) und Python wird eine neue CSV-Datei ausspucken die neuen Datumsformate enthalten

+0

Sie machen Ihre Format-String eine Variable ... schreiben und dann sollten Sie strftime zu Ausgabezeit in einem bestimmten Format verwenden ... auch 'python-dateitil' kann fast jedes Datumsformat parsen ... es kommt nur auf den Punkt (indem man eine Liste gängiger Formate durchgeht) –

+0

Was ist' data', auf das du dich beziehst, in 'csv.DictWriter' Codezeile – Tanu

Antwort

1

Sie könnten ein Array erstellen von . möglich Datumsformate über sie iterieren und versuchen, das Datum zu konvertieren

Etwas wie folgt aus:.

from datetime import datetime 

ALLOWED_FORMATS = ['%Y-%m-%d', '%Y/%m/%d', '%d.%m.%Y'] 

def convert_date(string): 

    for format in ALLOWED_FORMATS: 
     try: 
      return datetime.strptime(string, format) 
     except ValueError: 
      pass 

Dies ist die Art und Weise, wie Djangos Datetimefield dies der Fall, wenn Sie bereits Django haben gerade in Ihrem Projekt konnte man Übergeben Sie Ihre Zeichenfolge an eine DatetimeField-Instanz

Die Reihenfolge der Formate in der Liste kann wichtig sein, um falsche Pars zu vermeiden. Wenn die Datumsformate jedoch unterschiedlich sind, könnte es sich um eine tatsächliche Mehrdeutigkeit handeln.

0

Antwort für, wie man neue aktualisierte csv in Datei schreibt.

Um eine Zeile mit csv.DictWriter zum Schreiben einer Zeile in eine CSV-Datei

output_file = open('output.csv','w') 
df2 = csv.DictWriter(output_file, row.keys()) #row.keys() is to write headers to output CSV file which are `keys` of row 
df2.writeheader() 
df2.writerow(row) 
Verwandte Themen