mobile wallpaper 1mobile wallpaper 2mobile wallpaper 3mobile wallpaper 4
249 文字
1 分
異なる日時形式でpandas.to_datetimeを使用した際にエラーが発生するケースについて
2024-01-02

https://dreaife-team.atlassian.net/browse/DREAITE-39

菜鳥教程で、pandasを使って形式エラーのあるデータをクリーニングする方法を見ていたところ、掲載されているコードが現在使用しているバージョンでは動作しないことに気付きました。

エラーについてネットでかなり調べましたが、見つかるのはどれもerrors引数を変更する方法ばかりでした。

最後にもう一度エラーメッセージを確認したところ、formatmixedに変更し、データ形式が混在していることをpandasに伝えればよいと分かりました(汗)。おそらくPython 3のバージョンが新しすぎることが原因です。

エラーが発生するコード:

import pandas as pd
# 第三个日期格式错误
data = {
"Date": ['2020/12/01', '2020/12/02' , '20201226'],
"duration": [50, 40, 45]
}
df = pd.DataFrame(data, index = ["day1", "day2", "day3"])
df['Date'] = pd.to_datetime(df['Date'])
print(df.to_string())

エラーメッセージ:

ValueError: time data "20201226" doesn't match format "%Y/%m/%d", at position 2. You might want to try:
- passing `format` if your strings have a consistent format;
- passing `format='ISO8601'` if your strings are all ISO8601 but not necessarily in exactly the same format;
- passing `format='mixed'`, and the format will be inferred for each element individually. You might want to use `dayfirst` alongside this.

修正後のコード:

import pandas as pd
# 第三个日期格式错误
data = {
"Date": ['2020/12/01', '2020/12/02' , '20201226'],
"duration": [50, 40, 45]
}
df = pd.DataFrame(data, index = ["day1", "day2", "day3"])
df['Date'] = pd.to_datetime(df['Date'], format='mixed')
# df['Date'] = pd.to_datetime(df['Date'],format="%Y/%m/%d",errors='ignore')
print(df.to_string())
共有

この記事が役に立ったときは、ぜひ他の人に共有してください!

異なる日時形式でpandas.to_datetimeを使用した際にエラーが発生するケースについて
https://dreaife.tokyo/jp/posts/pandas-datetime-fix/
著者
dreaife
公開日
2024-01-02
ライセンス
CC BY-NC-SA 4.0

一部の情報は古い可能性があります

目次