Я проанализировал большие наборы XML-файлов, чтобы получить кадр данных Pandas.Теперь мне нужно удалить некоторые столбцы для анализа данных.Я не могу найти точную ошибку в предыдущих вопросах.Я использовал -
data = data["Rig Mode","Bit on Bottom","Block Position","Block Velocity",..]
И получил сообщение об ошибке (полное сообщение об ошибке в конце поста) -
KeyError: 'Key length (22) exceeds index depth (2)'
Итак, я исследовал и перешел к этому посту , это упоминает lexsort depth
связанную ошибку, в то время как моя точно такая же, как опубликованная выше.Я отсортировал Индекс по указанному выше посту -
`data = data.sort_index(level=1)`
pd.__version__
'0.22.0'
Python version - 3.6.4
И получил точно такую же ошибку.Ниже я извлекаю свои мультииндексные данные -
data.columns
#MultiIndex(levels=[['Bit on Bottom','Block Position', 'Block Velocity', 'Rig Mode',...], ['', '1/min', 'L/min', 'dega', ...]],
labels=[[38, 0, 2, 22, ...]],
names=['Description', 'Unit'])
Вот как я построил свой мультииндекс при подготовке кадра данных, теперь заголовки столбцов были проанализированы как строки в наборе данных -
data.columns = pd.MultiIndex.from_arrays([data.iloc[0],data.iloc[1]], names = ['Description','Unit'])
data=data.iloc[2:]
#### complete error message:
> --------------------------------------------------------------------------- KeyError Traceback (most recent call
> last) <ipython-input-119-60ad57c2383f> in <module>()
> 3 "Continuous Survey Depth","Pump 1 Stroke Rate","Pump 2 Stroke Rate","Pump 3 Stroke Rate",
> 4 "Average Standpipe Pressure","Slips stat (1=Out,0=In)", "Weight on Bit","Mud Flow
> In","Time","Average Surface Torque",
> ----> 5 "MWD Turbine RPM"]
>
> ~\Anaconda3\lib\site-packages\pandas\core\frame.py in
> __getitem__(self, key) 2135 return self._getitem_frame(key) 2136 elif is_mi_columns:
> -> 2137 return self._getitem_multilevel(key) 2138 else: 2139 return self._getitem_column(key)
>
> ~\Anaconda3\lib\site-packages\pandas\core\frame.py in
> _getitem_multilevel(self, key) 2179 2180 def _getitem_multilevel(self, key):
> -> 2181 loc = self.columns.get_loc(key) 2182 if isinstance(loc, (slice, Series, np.ndarray, Index)): 2183
> new_columns = self.columns[loc]
>
> ~\Anaconda3\lib\site-packages\pandas\core\indexes\multi.py in
> get_loc(self, key, method) 2076 if self.nlevels < keylen:
> 2077 raise KeyError('Key length ({0}) exceeds index depth
> ({1})'
> -> 2078 ''.format(keylen, self.nlevels)) 2079 2080 if keylen == self.nlevels and self.is_unique:
>
> KeyError: 'Key length (22) exceeds index depth (2)'