引用テキスト### 前提・実現したいこと
pandasでtestデータとtrainデータを整形していますが
trainでは```Python3
コード
train = train.astype(float) #全てfloatに変換される
しかし、testでは以下を実行するとエラーメッセージ
test = test.astype(float) --------------------------------------------------------------------------- ValueError Traceback (most recent call last) <ipython-input-41-2f18abe8c2b8> in <module> ----> 1 test = test.astype(float) ~/opt/anaconda3/lib/python3.7/site-packages/pandas/core/generic.py in astype(self, dtype, copy, errors) 5696 else: 5697 # else, only a single dtype is given -> 5698 new_data = self._data.astype(dtype=dtype, copy=copy, errors=errors) 5699 return self._constructor(new_data).__finalize__(self) 5700 ~/opt/anaconda3/lib/python3.7/site-packages/pandas/core/internals/managers.py in astype(self, dtype, copy, errors) 580 581 def astype(self, dtype, copy: bool = False, errors: str = "raise"): --> 582 return self.apply("astype", dtype=dtype, copy=copy, errors=errors) 583 584 def convert(self, **kwargs): ~/opt/anaconda3/lib/python3.7/site-packages/pandas/core/internals/managers.py in apply(self, f, filter, **kwargs) 440 applied = b.apply(f, **kwargs) 441 else: --> 442 applied = getattr(b, f)(**kwargs) 443 result_blocks = _extend_blocks(applied, result_blocks) 444 ~/opt/anaconda3/lib/python3.7/site-packages/pandas/core/internals/blocks.py in astype(self, dtype, copy, errors) 623 vals1d = values.ravel() 624 try: --> 625 values = astype_nansafe(vals1d, dtype, copy=True) 626 except (ValueError, TypeError): 627 # e.g. astype_nansafe can fail on object-dtype of strings ~/opt/anaconda3/lib/python3.7/site-packages/pandas/core/dtypes/cast.py in astype_nansafe(arr, dtype, copy, skipna) 895 if copy or is_object_dtype(arr) or is_object_dtype(dtype): 896 # Explicit copy, or required since NumPy can't view from / to object. --> 897 return arr.astype(dtype, copy=True) 898 899 return arr.view(dtype) ValueError: could not convert string to float: ```Python3 が出てしまいます。なぜなのでしょうか。
#train(floatに変換できている)
PassengerId Survived Pclass Age SibSp Parch Fare man woman child A B C D E F G C_Embarked Q_Embarked S_Embarked female male
0 1.0 0.0 3.0 22.0 1.0 0.0 7.2500 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 1.0
1 2.0 1.0 1.0 38.0 1.0 0.0 71.2833 1.0 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 1.0 0.0
2 3.0 1.0 3.0 26.0 0.0 0.0 7.9250 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 1.0 0.0
3 4.0 1.0 1.0 35.0 1.0 0.0 53.1000 1.0 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 1.0 0.0
4 5.0 0.0 3.0 35.0 0.0 0.0 8.0500 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 1.0
#test 全てstr型 floatに変換できない。
PassengerId Pclass Age SibSp Parch Fare man woman child A B C D E F G C_Embarked Q_Embarked S_Embarked female male
0 892 3 34.5 0 0 7.8292 1 0 0 0 0 0 0 0 0 0 0 1 0 0 1
1 893 3 47 1 0 7 1 1 0 0 0 0 0 0 0 0 0 0 1 1 0
2 894 2 62 0 0 9.6875 1 0 0 0 0 0 0 0 0 0 0 1 0 0 1
3 895 3 27 0 0 8.6625 1 0 0 0 0 0 0 0 0 0 0 0 1 0 1
4 896 3 22 1 1 12.2875 1 1 0 0 0 0 0 0 0 0 0 0 1 1 0
### 試したこと 'Age'が'2','4','',...,'',...と欠損している場所があったため、
train['Age'] = train['Age'].apply(lambda x: '0' if x == '' else x)
test['Age'] = test['Age'].apply(lambda x: '0' if x == '' else x)
で補完しています。後は、特段の欠損は見られません。 ### 補足情報(FW/ツールのバージョンなど) ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー