Столкновение с пандой с кадром данных KeyError: 'n_tokens_content', как найти плохие строки? - PullRequest
0 голосов
/ 28 марта 2019

Я пытаюсь исследовать этот набор данных с пандами 0.20.3 в Python 3.6.2.

%pylab inline
import pandas as pd
df = pd.read_csv('OnlineNewsPopularity.csv')
df['n_tokens_content'][:9]

последняя строка вызывает ошибку

KeyErrorTraceback (последний вызов был последним) ~ / anaconda3 / envs / tf11 / lib / python3.6 / site-packages / pandas / core / indexes / base.py в get_loc (self, key, method, допуск) 2441 try: ->2442 возвращает self._engine.get_loc (key) 2443 за исключением KeyError:

pandas / _libs / index.pyx в pandas._libs.index.IndexEngine.get_loc (pandas / _libs / index.c: 5280) ()

pandas / _libs / index.pyx в pandas._libs.index.IndexEngine.get_loc (pandas / _libs / index.c: 5126) ()

pandas / _libs / hashtable_class_helper.pxi вpandas.hashtable.c: 20477) ()

KeyError: 'n_tokens_content'

Во время обработки вышеуказанного исключения возникает другое исключениеd:

KeyError Traceback (последний последний вызов) в () ----> 1 df ['n_tokens_content'] [: 9]

~ / anaconda3 / envs / tf11 / lib/python3.6/site-packages/pandas/core/frame.py в getitem (self, key) 1962 return self._getitem_multilevel (key) 1963 else: -> 1964 return self._getitem_column (key)1965 1966 def _getitem_column (self, key):

~ / anaconda3 / envs / tf11 / lib / python3.6 / site-packages / pandas / core / frame.py в _getitem_column (self, key) 1969 #получить столбец 1970
, если self.columns.is_unique: -> 1971 вернуть self._get_item_cache (ключ) 1972 1973 # дублировать столбцы и уменьшить размерность

~ / anaconda3 / envs / tf11 / lib / python3.6 / site-packages / pandas / core / generic.py в _get_item_cache (self, item) 1643 res = cache.get (item)
1644, если res отсутствует: -> 1645 values ​​= self._data.get (item) 1646 res = self._box_item_values ​​(item, values) 1647
кеш [item] = res

~ / anaconda3 / envs / tf11 / lib / python3.6 / site-packages / pandas / core /internals.py в гet (self, item, fastpath) 3588 3589 если не isnull (item): -> 3590 loc = self.items.get_loc (item) 3591 else: 3592 indexer = np.arange (len (self.items)) [isnull (self.items)]

~ / anaconda3 / envs / tf11 / lib / python3.6 / site-packages / pandas / core / indexes / base.py в get_loc (собственный, ключ, метод, допуск) 2442
вернуть self._engine.get_loc (ключ) 2443 кроме KeyError: -> 2444 вернуть self._engine.get_loc (self._maybe_cast_indexer (ключ)) 2445 2446
indexer = self.get_indexer ([ключ], метод =метод, допуск = толерантность)

pandas / _libs / index.pyx в pandas._libs.index.IndexEngine.get_loc (pandas / _libs / index.c: 5280) ()

pandas /_libs / index.pyx в pandas._libs.index.IndexEngine.get_loc (pandas / _libs / index.c: 5126) ()

pandas / _libs / hashtable_class_helper.pxi в pandas._libs.hashtable.TyBject.get_item (pandas / _libs / hashtable.c: 20523) ()

pandas / _libs / hashtable_class_helper.pxi в pandas._libs.hashtable.PyObjectHashTable.get_item (pandas / _libs / hashtable.c: 20477) ()

KeyError: 'n_tokens_content'

Я думаю, что это вызвано некоторыми строками в файле csv, так как этот фрагмент кода хорошо работает для других csv.

если да, как найти плохие строки?

1 Ответ

1 голос
/ 28 марта 2019

Когда вы печатаете столбцы, используя df.columns, тогда n_tokens_content имеет начальный пробел в начале.

Ввод: df.columns

Выход:

Index(['url', ' timedelta', ' n_tokens_title', ' n_tokens_content',
   ' n_unique_tokens', ' n_non_stop_words', ' n_non_stop_unique_tokens',
   ' num_hrefs', ' num_self_hrefs', ' num_imgs', ' num_videos',
   ' average_token_length', ' num_keywords', ' data_channel_is_lifestyle',
   ' data_channel_is_entertainment', ' data_channel_is_bus',
   ' data_channel_is_socmed', ' data_channel_is_tech',
   ' data_channel_is_world', ' kw_min_min', ' kw_max_min', ' kw_avg_min',
   ' kw_min_max', ' kw_max_max', ' kw_avg_max', ' kw_min_avg',
   ' kw_max_avg', ' kw_avg_avg', ' self_reference_min_shares',
   ' self_reference_max_shares', ' self_reference_avg_sharess',
   ' weekday_is_monday', ' weekday_is_tuesday', ' weekday_is_wednesday',
   ' weekday_is_thursday', ' weekday_is_friday', ' weekday_is_saturday',
   ' weekday_is_sunday', ' is_weekend', ' LDA_00', ' LDA_01', ' LDA_02',
   ' LDA_03', ' LDA_04', ' global_subjectivity',
   ' global_sentiment_polarity', ' global_rate_positive_words',
   ' global_rate_negative_words', ' rate_positive_words',
   ' rate_negative_words', ' avg_positive_polarity',
   ' min_positive_polarity', ' max_positive_polarity',
   ' avg_negative_polarity', ' min_negative_polarity',
   ' max_negative_polarity', ' title_subjectivity',
   ' title_sentiment_polarity', ' abs_title_subjectivity',
   ' abs_title_sentiment_polarity', ' shares'],
  dtype='object')

Дайте ввод как: df[' n_tokens_content'][:9]

Выход: 0 219 1 255 2 211 3 531 4 1072 5 370 6 960 7 989 8 97

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...