web-dev-qa-db-ja.com

ValueError:日が月の範囲外です

文字列をデータフレームから日時に変換したい。

dfx = df.ix[:,'a']
dfx = pd.to_datetime(dfx)

ただし、次のエラーが発生します。

ValueError:日が月の範囲外です

誰か助けてもらえますか?

11
Niladri Gomes

Datetimeの形式がdayfirst=Trueの場合、パラメータto_datetime30-01-2016 に追加するのに役立ちます。

dfx = df.ix[:,'a']
dfx = pd.to_datetime(dfx, dayfirst=True)

より一般的なのは、パラメータを使用する format with errors='coerce'で値を他のformatからNaNに置き換えることです:

dfx = '30-01-2016'

dfx = pd.to_datetime(dfx, format='%d-%m-%Y', errors='coerce')
print (dfx)
2016-01-30 00:00:00

サンプル:

dfx = pd.Series(['30-01-2016', '15-09-2015', '40-09-2016'])
print (dfx)
0    30-01-2016
1    15-09-2015
2    40-09-2016
dtype: object

dfx = pd.to_datetime(dfx, format='%d-%m-%Y', errors='coerce')
print (dfx)
0   2016-01-30
1   2015-09-15
2          NaT
dtype: datetime64[ns]

形式が標準の場合(例:01-30-2016または01-30-2016)、errors='coerce'のみを追加します。

dfx = pd.Series(['01-30-2016', '09-15-2015', '09-40-2016'])
print (dfx)
0    01-30-2016
1    09-15-2015
2    09-40-2016
dtype: object

dfx = pd.to_datetime(dfx, errors='coerce')
print (dfx)
0   2016-01-30
1   2015-09-15
2          NaT
dtype: datetime64[ns]
13
jezrael