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の間の両方である場合にも、通知、あなたはあなたが正しい日時に解析することを確認することはないだろうということ。可能な場合は、さまざまな形式の原因を追求し、それらを個別に解析する必要があります。