前提・実現したいこと
数値をオブジェクト型にし、int型の時に抜け落ちた0を補完しようとしています。
具体的には、数値を4桁のオブジェクトとして扱うために4桁以下の数値は、前に「0」を4桁になるように加えて、全てのデータを4桁にしたいです。
データの量が少量であれば、手動で「32」→「0032」としてもいいのですが、2万件以上のデータの補完を一括で行いたいです。
入力データフレーム(4桁以上のデータは含まれない)
1100 32 1515 9 72 6011 456
実現したいこと
1100 0032 1515 0009 0072 6011 0456
発生している問題・エラーメッセージ
①float型からobject型に型変換をしているが、キャストした後も型が変更できていないです。
②0を補完する方法がわからないため、方法を教えていただきたいです。
検索等をおこないましたが、適当な情報が得られていない状況のため、お力を貸していただきたいです。
該当のソースコード
python
1import pandas as pd 2s = pd.Series([1100,32,1515,9,72,6011,4567]) 3s.dtypes #出力dtype('int64') 4s[0] = s[0].astype(str) 5s.dtypes #出力がdtype('int64')のまま
試したこと
文字列メソッドzfill()を使う方法に関しての参考記事に掲載されていたコードは実行可能でしたが、データフレームのカラム全体に適用する際にはエラーが出てしまうようです。
python
1n = 1234 2 3print(type(n)) 4# <class 'int'> 5 6# print(n.zfill(8)) 7# AttributeError: 'int' object has no attribute 'zfill' 8 9print(str(n).zfill(8)) 10# 00001234
ご回答を受けて試したこと
上記の該当コードに追加で、以下のコードを実行したところ、エラーが出てしまいました。
python
1s_zero = s.zfill(4)
エラー文
AttributeError Traceback (most recent call last) <ipython-input-6-f347435a840b> in <module>() ----> 1 s_zero = s.zfill(4) ~/.pyenv/versions/anaconda3-5.0.1/lib/python3.6/site-packages/pandas/core/generic.py in __getattr__(self, name) 3079 if name in self._info_axis: 3080 return self[name] -> 3081 return object.__getattribute__(self, name) 3082 3083 def __setattr__(self, name, value): AttributeError: 'Series' object has no attribute 'zfill'
補足情報(FW/ツールのバージョンなど)
Python 3.6.0 :: Anaconda 4.3.0
回答2件
あなたの回答
tips
プレビュー