Ошибка: ошибка ключа хэш-таблицы pandas

#pandas

#python #pandas #фрейм данных

Вопрос:

Я успешно прочитал файл CSV с использованием pandas. Когда я пытаюсь распечатать определенный столбец из фрейма данных, я получаю ошибку ключа. Настоящим я делюсь кодом с ошибкой.

 import pandas as pd
reviews_new = pd.read_csv("D:\aviva.csv")
reviews_new['review']
  

**

 reviews_new['review']
Traceback (most recent call last):
  File "<ipython-input-43-ed485b439a1c>", line 1, in <module>
    reviews_new['review']
  File "C:Users30216AppDataLocalContinuumAnaconda2libsite-packagespandascoreframe.py", line 1997, in __getitem__
    return self._getitem_column(key)
  File "C:Users30216AppDataLocalContinuumAnaconda2libsite-packagespandascoreframe.py", line 2004, in _getitem_column
    return self._get_item_cache(key)
  File "C:Users30216AppDataLocalContinuumAnaconda2libsite-packagespandascoregeneric.py", line 1350, in _get_item_cache
    values = self._data.get(item)
  File "C:Users30216AppDataLocalContinuumAnaconda2libsite-packagespandascoreinternals.py", line 3290, in get
    loc = self.items.get_loc(item)
  File "C:Users30216AppDataLocalContinuumAnaconda2libsite-packagespandasindexesbase.py", line 1947, in get_loc
    return self._engine.get_loc(self._maybe_cast_indexer(key))
  File "pandasindex.pyx", line 137, in pandas.index.IndexEngine.get_loc (pandasindex.c:4154)
  File "pandasindex.pyx", line 159, in pandas.index.IndexEngine.get_loc (pandasindex.c:4018)
  File "pandashashtable.pyx", line 675, in pandas.hashtable.PyObjectHashTable.get_item (pandashashtable.c:12368)
  File "pandashashtable.pyx", line 683, in pandas.hashtable.PyObjectHashTable.get_item (pandashashtable.c:12322)
KeyError: 'review'
  

**

Может ли кто-нибудь помочь мне в этом?

Комментарии:

1. Что такое print (reviews_new.columns.tolist()) ?

2. как на самом деле выглядит исходный CSV? Что print(reviews_new.columns.tolist()) показывает? В именах ваших столбцов могут быть пробелы

3. Пожалуйста, поделитесь результатами reviews_new.info()

4. Вы должны указать имена столбцов, если они отсутствуют в csv. Пожалуйста, вставьте вывод reviews_new.columns

5. @ jezrael amp; edchum : печать (reviews_new.columns. tolist()) [‘Имя’, ‘Дата’, ‘обзор’]

Ответ №1:

Я думаю, сначала лучше всего исследовать, каковы реальные названия столбцов, если лучше преобразовать в список, видны некоторые пробелы или что-то подобное:

 print (reviews_new.columns.tolist())
  

Я думаю, что может быть 2 проблемы (очевидно):

1.пробелы в названиях столбцов (возможно, и в данных)

Решения — это strip пробелы в именах столбцов:

 reviews_new.columns = reviews_new.columns.str.strip()
  

Или добавьте параметр skipinitialspace в read_csv :

 reviews_new = pd.read_csv("D:\aviva.csv", skipinitialspace=True)
  

2. другой разделитель по умолчанию ,

Решение заключается в добавлении параметра sep :

 #sep is ;
reviews_new = pd.read_csv("D:\aviva.csv", sep=';')
#sep is whitespace
reviews_new = pd.read_csv("D:\aviva.csv", sep='s ')
reviews_new = pd.read_csv("D:\aviva.csv", delim_whitespace=True)
  

Редактировать:

Вы получаете пробел в имени столбца, поэтому нужно 1.solutions :

 print (reviews_new.columns.tolist())
['Name', ' Date', ' review'] 
          ^        ^
  

Ответ №2:

 import pandas as pd
df=pd.read_csv("file.txt", skipinitialspace=True)
df.head()
df['review']
  

Ответ №3:

 dfObj['Hash Key'] = (dfObj['DEAL_ID'].map(str)  dfObj['COST_CODE'].map(str)  dfObj['TRADE_ID'].map(str)).apply(hash)

#for index, row in dfObj.iterrows():
#        dfObj.loc[`enter code here`index,'hash'] = hashlib.md5(str(row[['COST_CODE','TRADE_ID']].values)).hexdigest()

print(dfObj['hash'])