اذهب إلى المحتوى
  • 0

ظهور الخطأ hashtable keyerror في pandas

Mohamed Elnemr

السؤال

أقوم بتحميل بيانات لدي بالشكل التالي:

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

لكن يظهر لي هذا الخطأ:

reviews_new['review']
Traceback (most recent call last):
  File "<ipython-input-43-ed485b439a1c>", line 1, in <module>
    reviews_new['review']
  File "C:\Users\30216\AppData\Local\Continuum\Anaconda2\lib\site-packages\pandas\core\frame.py", line 1997, in __getitem__
    return self._getitem_column(key)
  File "C:\Users\30216\AppData\Local\Continuum\Anaconda2\lib\site-packages\pandas\core\frame.py", line 2004, in _getitem_column
    return self._get_item_cache(key)
  File "C:\Users\30216\AppData\Local\Continuum\Anaconda2\lib\site-packages\pandas\core\generic.py", line 1350, in _get_item_cache
    values = self._data.get(item)
  File "C:\Users\30216\AppData\Local\Continuum\Anaconda2\lib\site-packages\pandas\core\internals.py", line 3290, in get
    loc = self.items.get_loc(item)
  File "C:\Users\30216\AppData\Local\Continuum\Anaconda2\lib\site-packages\pandas\indexes\base.py", line 1947, in get_loc
    return self._engine.get_loc(self._maybe_cast_indexer(key))
  File "pandas\index.pyx", line 137, in pandas.index.IndexEngine.get_loc (pandas\index.c:4154)
  File "pandas\index.pyx", line 159, in pandas.index.IndexEngine.get_loc (pandas\index.c:4018)
  File "pandas\hashtable.pyx", line 675, in pandas.hashtable.PyObjectHashTable.get_item (pandas\hashtable.c:12368)
  File "pandas\hashtable.pyx", line 683, in pandas.hashtable.PyObjectHashTable.get_item (pandas\hashtable.c:12322)
KeyError: 'review'

كيف أقوم بحل هذا الخطأ؟

رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 0

في البداية قمت بتحويل أسماء الأعمدة الي list وذلك للتأكد من كتابتها بطريقة صحيحة:

print (df.columns.tolist())

وقد ظهر أن هناك بعض المسافات الزائدة في أسماء الأعمدة:

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

ويمكنك الاستغناء عن تلك المسافات بالكود التالي:

new_df.columns = df.columns.str.strip()

أو باستخدام الكود التالي اثناءء تحميل الملف:

df = pd.read_csv("D:\\data.csv", skipinitialspace=True)

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 1

طالما أنك لم تعطنا مصدر البيانات فلايمكننا تحديد المشكلة، لكن هناك احتمالين الأول هو أنه هناك مسافات فارغة (وحلها كما أشار أيضاً)، أو أن هناك separator مختلف فافتراضياً يكون الفاصل هو "," لكن ليس بالضرورة دوماً لذا يجب عليك:

  1. إذا كنت تعرف نوع ال separator فقم بتعيينه مباشرة للوسيط.
  2. أو إذا لم تكن تعرفه قم بفتح ملف ال csv وتحقق من نوع ال separator.

على سبيل المثال إذا كان ; نقوم بقراءة البيانات بالشكل:

pd.read_csv("D:\\data.csv", sep=';')

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

يمكنك تجربة أحد الحلول التالية

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

print(dfObj['hash'])

أو الكود التالي

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

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...