Pythonは:日時形式に文字列内の複数の日付の書式を変更します

changhons:

私は、日時形式に文字列形式で別の日付を変換しようとしています。私は列「status_change_date」の日付の程度〜1,000,000の行を持っています。問題は、そこに多くの異なった形式があると私は、彼らがすべてであるかのフォーマットで分からないということです。

だから、私は私のjupyterノートにこの機能をしようとしています:

def parsing_date(date_string):
    for date_format in ("%d/%m/%Y %H:%M:%S", "%m/%d/%Y %H:%M:%S", "%m/%d/%Y %H:%M:%S%p", "%d/%m/%Y %H:%M:%S%p", "%-m/%-d/%Y %H:%M:%S", "%-d/%-m/%Y %H:%M:%S", "%-m/%-d/%Y %H:%M:%S%p", "%-d/%-m/%Y %H:%M:%S%p"):
        try:
            return datetime.strptime(date_string, date_format)
        except ValueError:
            raise
            print(date_string)
        raise ValueError('Something is wrong')

そして、

data['status_chage_date'].apply(parsing_date)

エラーがもはや存在しなくなるまで、私は私の関数の中でいずれかによって、アカウント1を取ることができますので、私はエラーをプリントアウトしています。しかし、私はこのエラーメッセージに遭遇しています:

ValueError: time data '17/10/2019 05:49:51' does not match format '%m/%d/%Y %H:%M:%S'

若しくは

strptime() argument 1 must be str, not None

私は私が私の機能でフォーマットをカバーし、私はなし値を持つ行を除外した第2の誤差が奇妙であると思いました。

何が私が間違ってやっているし、これを行うには良い方法はありますか?

bcosta12:

あなたは、エラーが発生したときに上げることに注意してください!あなたは前に、すべての可能性をテストする必要があります。

import pandas as pd 

def parsing_date(date_string):
    d = None
    for date_format in ("%d/%m/%Y %H:%M:%S", "%m/%d/%Y %H:%M:%S", "%m/%d/%Y %H:%M:%S%p", "%d/%m/%Y %H:%M:%S%p", "%-m/%-d/%Y %H:%M:%S", "%-d/%-m/%Y %H:%M:%S", "%-m/%-d/%Y %H:%M:%S%p", "%-d/%-m/%Y %H:%M:%S%p"):
        try:
            d = datetime.strptime(date_string, date_format)
            break
        except:
            pass
    if d is not None:
        return d
    else:
        return pd.NaT

あなたの一日と月が12までの数字1の間の両方である場合にも、通知、あなたはあなたが正しい日時に解析することを確認することはないだろうということ。可能な場合は、さまざまな形式の原因を追求し、それらを個別に解析する必要があります。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=320878&siteId=1