前提・実現したいこと
エクセル内の数字列を時系列データに変換したいのですがうまくできません。
エクセル自体のデータ例:198604
これを1986-04
のように変換したいです
df['年月'] = pd.to_datetime(df['年月'], format = '%Y%m')
df['年月']
(年月データ(yyyymm)をyyyy-mmのように変換したい)
しかし実際は
0 1970-01-01 00:00:00.000196501
1 1970-01-01 00:00:00.000196501
2 1970-01-01 00:00:00.000196501
3 1970-01-01 00:00:00.000197710
4 1970-01-01 00:00:00.000197710
のようになってしまいます。
解決策を教えてほしいです。
(エクセルデータの前処理が必要なのでしょうか?あるいはpandasで数字列をうまく処理できるのでしょうか??)
発生している問題・エラーメッセージ
TypeError Traceback (most recent call last)
~\anaconda3\lib\site-packages\pandas\core\tools\datetimes.py in _convert_listlike_datetimes(arg, format, name, tz, unit, errors, infer_datetime_format, dayfirst, yearfirst, exact)
449 try:
--> 450 values, tz = conversion.datetime_to_datetime64(arg)
451 dta = DatetimeArray(values, dtype=tz_to_dtype(tz))
pandas_libs\tslibs\conversion.pyx in pandas._libs.tslibs.conversion.datetime_to_datetime64()
TypeError: Unrecognized value type: <class 'str'>
During handling of the above exception, another exception occurred:
ValueError Traceback (most recent call last)
<ipython-input-7-41d172471441> in <module>
----> 1 df['年月'] = pd.to_datetime(df['年月'].astype(str), format = '%Y%m')
2 df['年月']
~\anaconda3\lib\site-packages\pandas\core\tools\datetimes.py in to_datetime(arg, errors, dayfirst, yearfirst, utc, format, exact, unit, infer_datetime_format, origin, cache)
797 result = result.tz_localize(tz)
798 elif isinstance(arg, ABCSeries):
--> 799 cache_array = _maybe_cache(arg, format, cache, convert_listlike)
800 if not cache_array.empty:
801 result = arg.map(cache_array)
~\anaconda3\lib\site-packages\pandas\core\tools\datetimes.py in _maybe_cache(arg, format, cache, convert_listlike)
168 unique_dates = unique(arg)
169 if len(unique_dates) < len(arg):
--> 170 cache_dates = convert_listlike(unique_dates, format)
171 cache_array = Series(cache_dates, index=unique_dates)
172 return cache_array
~\anaconda3\lib\site-packages\pandas\core\tools\datetimes.py in _convert_listlike_datetimes(arg, format, name, tz, unit, errors, infer_datetime_format, dayfirst, yearfirst, exact)
452 return DatetimeIndex._simple_new(dta, name=name)
453 except (ValueError, TypeError):
--> 454 raise e
455
456 if result is None:
~\anaconda3\lib\site-packages\pandas\core\tools\datetimes.py in _convert_listlike_datetimes(arg, format, name, tz, unit, errors, infer_datetime_format, dayfirst, yearfirst, exact)
415 if result is None:
416 try:
--> 417 result, timezones = array_strptime(
418 arg, format, exact=exact, errors=errors
419 )
pandas_libs\tslibs\strptime.pyx in pandas._libs.tslibs.strptime.array_strptime()
ValueError: unconverted data remains: .0
回答2件
あなたの回答
tips
プレビュー