2016-05-18 3 views
0

Pycharmを使ってPythonを学習しています。私は、異なる日付形式を1つの日付形式に変換する関数を記述しようとしています。特に、どのような形式で、どの形式を使用するのかを関数に任せて、将来のデータセットにこの関数を使用することができます。私は非常に大規模なデータセットを扱っています(今のところ20GBですが、後で200GBのデータセットで作業する必要があります)。Pythonで異なる日付形式を変換する関数を書く

は、これまでのところ、私はこれを試してみました:

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 

これまでのところ、私は

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

が、私はそれをプリントアウトしようとしたとして働き、この機能を知っています。しかし、更新された"Date"列を持つこれらの行をすべて新しいcsvファイルに書き込むにはどうすればよいですか?そしてそこには方法です、将来的に言って、私はちょうどそれを望まない日付の書式を置くことができる(すなわちformat_date(df,yyyy/mm/yy)Pythonは、あなたがの配列を作成することができ、新しい日付の書式

+0

をCSVファイルに行を書き込むためcsv.DictWriterを使用して行を書き込むには

'python-dateutil'はちょうどあらゆる日付形式を解析することができます...普通の形式のリストを調べることによってそれを見つけます。 –

+0

' csv.DictWriter'のコード行で参照している 'data'は何ですか? – Tanu

答えて

1

を含む新しいCSVファイルを吐き出すます可能な日付形式その上に反復処理し、日付を変換しようと、このような

何か:。。

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 

これは、DjangoのDateTimeField型は、それをしない仕方で、あなたのプロジェクトですでにジャンゴを持っている場合、あなただけの可能性文字列をDatetimeFieldインスタンスに渡します。

誤った解析を避けるために、リスト内の書式の順序は重要です。しかし、日付形式が多様であれば、それらは実際のあいまいである可能性があります。

0

新しい更新されたcsvをファイルに書き込む方法についての回答。また、...あなたはフォーマット文字列変数にする...そしてあなたが与えられたフォーマットで出力時間にはstrftimeを使用する必要があります

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) 
関連する問題