私はdf
です。ほとんどのエントリが'yyyymmdd'
の日付文字列ですが、'nan'
の値もあります。ここで、これらの'nan'
はfloat nanの代わりに文字列です。今私はpd.isnull
によって検出されることができるnan
の値をNaN
,NaT
などに変換しながら、dfのすべての日付文字列をpandas datetime形式に変換したいと思います。pandas to_datetimeが期待どおりに動作しない
errors
引数を使用してpd.to_datetime
関数を使用するとすぐに考えられます。デフォルト'raise'
、
errors : {'ignore', 'raise', 'coerce'}
、文書で述べたように -'raise'
場合は、無効な構文解析は例外
を発生させます -'coerce'
場合は、無効な解析がNaT
として設定されます -'ignore'
場合には、無効な解析によって入力が返されます
したがって、私はすべての値がstr
あるとさえ
001002.XY 600123.AB 123456.YZ 555555.GO
ipo_date 20100203 20150605 nan 20090501
delist_date nan 20170801 nan nan
実際'nan'
です。私はその後、私を投げる、pd.to_datetime(df, errors='coerce')
を試してみました:
Traceback (most recent call last):
File "D:\Anaconda3\lib\site-packages\IPython\core\interactiveshell.py", line 2881, in run_code
exec(code_obj, self.user_global_ns, self.user_ns)
File "<ipython-input-27-43c41318d6ab>", line 1, in <module>
pd.to_datetime(df, errors='coerce')
File "D:\Anaconda3\lib\site-packages\pandas\core\tools\datetimes.py", line 512, in to_datetime
result = _assemble_from_unit_mappings(arg, errors=errors)
File "D:\Anaconda3\lib\site-packages\pandas\core\tools\datetimes.py", line 591, in _assemble_from_unit_mappings
"[{0}] is missing".format(','.join(req)))
ValueError: to assemble mappings requires at least that [year, month, day] be specified: [day,month,year] is missing
しかし、私は、個々の細胞をしようとした場合、それが正常に働いた:私は何が起こったのかを把握することはできません
pd.to_datetime(df.iloc[0, 0])
Out[33]:
Timestamp('2010-02-03 00:00:00')
pd.to_datetime(df.iloc[1, 0])
Out[34]:
NaT
。私はあまりにも個々の列でテストし、彼らはうまく働い:
df.dtypes
Out[35]:
001002.XY object
600123.AB object
123456.YZ object
555555.GO object
dtype: object
しかし、これは犯人ではないようです:それはしかし価値がある何のために、すべての列がobject
dtype
として持って
pd.to_datetime(df.iloc[:, 0])
Out[36]:
ipo_date 2010-02-03
delist_date NaT
Name: 001002.XY, dtype: datetime64[ns]
誰かが助けたり説明したりできますか?ありがとう!
ありがとう!私は実際に文書で提供されている例を参照する必要があります。 'Series'で動作するので、' applymap'のように、 'DataFrame'で動作すると当然期待しています。しかし、それはしません。 – Vim
@Vim、あなたも大歓迎です:) – MaxU