Я пытаюсь заполнить средние значения для столбцов в моем фрейме данных.
Вот значения в этих 2 столбцах:
0 -3.0 NaN
1 25.0 NaN
2 25.0 NaN
3 1937.0 NaN
4 1965.0 NaN
5 1993.0 NaN
6 2021.0 NaN
7 2021.0 NaN
8 2049.0 NaN
9 2077.0 NaN
10 2105.0 NaN
11 2133.0 NaN
12 2161.0 NaN
13 2189.0 NaN
14 2217.0 NaN
from sklearn.impute import SimpleImputer
imputer = SimpleImputer(missing_values=np.nan, strategy='mean')
imputer = imputer.fit(data[['column1']])
data['column1'] = imputer.transform(data[['column1']]).ravel()
imputer = imputer.fit(data[['column2']])
data['column2'] = imputer.transform(data[['column2']]).ravel()
В то время как первый imputer.fit работает нормально, второй выдает ошибку.
Вот ошибка «ValueError: длина значений не соответствует длине индекса» и весь стек ошибок ниже.
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-30-44682728650c> in <module>()
3
4 imputer = imputer.fit(data[['column2']])
----> 5 data['column2'] = imputer.transform(data[['column2']]).ravel()
~/anaconda3/envs/python3/lib/python3.6/site-packages/pandas/core/frame.py in __setitem__(self, key, value)
3368 else:
3369 # set column
-> 3370 self._set_item(key, value)
3371
3372 def _setitem_slice(self, key, value):
~/anaconda3/envs/python3/lib/python3.6/site-packages/pandas/core/frame.py in _set_item(self, key, value)
3443
3444 self._ensure_valid_index(value)
-> 3445 value = self._sanitize_column(key, value)
3446 NDFrame._set_item(self, key, value)
3447
~/anaconda3/envs/python3/lib/python3.6/site-packages/pandas/core/frame.py in _sanitize_column(self, key, value, broadcast)
3628
3629 # turn me into an ndarray
-> 3630 value = sanitize_index(value, self.index, copy=False)
3631 if not isinstance(value, (np.ndarray, Index)):
3632 if isinstance(value, list) and len(value) > 0:
~/anaconda3/envs/python3/lib/python3.6/site-packages/pandas/core/internals/construction.py in sanitize_index(data, index, copy)
517
518 if len(data) != len(index):
--> 519 raise ValueError('Length of values does not match length of index')
520
521 if isinstance(data, ABCIndexClass) and not copy:
ValueError: Length of values does not match length of index