あなたはto_datetime
を使用することができます。
まずフォーマット(YYYY-MM-DD
):
print (df)
dates
0 13/11/2016
1 21/01/2017
2 22/01/2017
3 2017-02-02
4 2016-12-11
5 13/11/2016
6 2016-12-12
7 21/01/2017
8 22/01/2017
9 2017-02-02
9 2017-02-25 <- YYYY-MM-DD
dates = pd.to_datetime(df.dates)
print (dates)
0 2016-11-13
1 2017-01-21
2 2017-01-22
3 2017-02-02
4 2016-12-11
5 2016-11-13
6 2016-12-12
7 2017-01-21
8 2017-01-22
9 2017-02-02
9 2017-02-25
Name: dates, dtype: datetime64[ns]
第二のフォーマット(YYYY-DD-MM
)
それは少し問題がある - 最後の必要性パラメータformat
とto_datetime
でerrors='coerce'
、 combine_first
またはfillna
:
print (df)
dates
0 13/11/2016
1 21/01/2017
2 22/01/2017
3 2017-02-02
4 2016-12-11
5 13/11/2016
6 2016-12-12
7 21/01/2017
8 22/01/2017
9 2017-02-02
9 2017-25-02 <- YYYY-DD-MM
dates1 = pd.to_datetime(df.dates, format='%d/%m/%Y', errors='coerce')
dates2 = pd.to_datetime(df.dates, format='%Y-%d-%m', errors='coerce')
dates = dates1.combine_first(dates2)
#dates = dates1.fillna(dates2)
print (dates)
0 2016-11-13
1 2017-01-21
2 2017-01-22
3 2017-02-02
4 2016-11-12
5 2016-11-13
6 2016-12-12
7 2017-01-21
8 2017-01-22
9 2017-02-02
9 2017-02-25
Name: dates, dtype: datetime64[ns]
try-except-ValueErrorを使用して、ファイル内のすべての可能な日付/時刻形式で行を解析します。 –
あなたの協力者は、米国とヨーロッパの両方の日付を送信しますか?もしそうなら、あなたは '01-02-2017'をどのように評価しますか?それは2017年2月1日ですか、それとも2017年1月2日ですか? – aydow