#python #pandas #dataframe
Вопрос:
Я успешно прочитал 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())
показывает? В ваших именах col могут быть пробелы3. Пожалуйста, поделитесь результатами
reviews_new.info()
4. Вы должны указать имена столбцов, если они отсутствуют в csv. Пожалуйста, вставьте выходные данные reviews_new.columns
5. @ jezrael amp; edchum : печать (рецензии, новые колонки. 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'])