मैंने एक CSV फ़ाइल को पंडों के डेटाफ़्रेम में लोड किया है:

import pandas as pd

Name     ID    Sex     M_Status    DaysOff
Joe      3      M         S           1
NaN     NaN    NaN       NaN          2
NaN     NaN    NaN       NaN          3

df = pd.read_csv('People.csv')

यह डेटा तब एक HTML फ़ाइल में लोड किया जाएगा।

test = """

      HTML code

 """

अब HTML फ़ाइल के लिए डेटा तैयार करने के लिए:

df1 = df.filter(['Name','ID','Sex','M_Status','DaysOff'])

file = ""

for i, rows in df1.iterrows():

   name = (df1['Name'][i])
   id = (df1['ID'][i])
   sex = (df1['Sex'][i])
   m_status = (df1['M_Status'][i])
   days_off = (df1['DaysOff'][i])

   with open(f"personInfo{i}.html", "w") as file:
      file.write(test.format(name,id,sex,m_status,days_off))
      file.close()

और त्रुटि:

KeyError: 'days_off'

नोट: यह त्रुटि लूप के लिए होती है।

क्या कोई देख सकता है कि मैं कहाँ गलत हो रहा हूँ? यह त्रुटि तब उत्पन्न होती है जब आप किसी ऐसे कॉलम से डेटा हथियाने का प्रयास करते हैं जो नाम से मेल नहीं खाता है, या यदि कॉलम में वह हेडर नहीं है। हालाँकि, यह करता है।

त्रुटि सूचना:

---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\indexes\base.py in 
get_loc(self, key, method, tolerance)
2656             try:
-> 2657                 return self._engine.get_loc(key)
2658             except KeyError:

pandas/_libs/index.pyx in pandas._libs.index.IndexEngine.get_loc()

pandas/_libs/index.pyx in pandas._libs.index.IndexEngine.get_loc()

pandas/_libs/hashtable_class_helper.pxi in 
pandas._libs.hashtable.PyObjectHashTable.get_item()

pandas/_libs/hashtable_class_helper.pxi in 
pandas._libs.hashtable.PyObjectHashTable.get_item()

KeyError: 'days_off'

During handling of the above exception, another exception occurred:

KeyError                                  Traceback (most recent call last)
<ipython-input-16-35e6b916521b> in <module>
      1     name = (df1['Name'][i])
      2     id =  (df1['ID'][i])
      3     sex = (df1['Sex'][i])
      4     m_status = (df1['M_Status'][i])
----> 5     days_off = (df1['DaysOff'][i])    

C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\frame.py in 
__getitem__(self, key)
   2925             if self.columns.nlevels > 1:
   2926                 return self._getitem_multilevel(key)
-> 2927             indexer = self.columns.get_loc(key)
   2928             if is_integer(indexer):
   2929                 indexer = [indexer]

C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\indexes\base.py in 
get_loc(self, key, method, tolerance)
   2657                 return self._engine.get_loc(key)
   2658             except KeyError:
-> 2659                 return 
self._engine.get_loc(self._maybe_cast_indexer(key))
   2660         indexer = self.get_indexer([key], method=method, 
tolerance=tolerance)
   2661         if indexer.ndim > 1 or indexer.size > 1:

pandas/_libs/index.pyx in pandas._libs.index.IndexEngine.get_loc()

pandas/_libs/index.pyx in pandas._libs.index.IndexEngine.get_loc()

pandas/_libs/hashtable_class_helper.pxi in 
pandas._libs.hashtable.PyObjectHashTable.get_item()

pandas/_libs/hashtable_class_helper.pxi in 
pandas._libs.hashtable.PyObjectHashTable.get_item()

KeyError: 'days_off'
1
MRL 3 नवम्बर 2019, 23:52

2 जवाब

सबसे बढ़िया उत्तर

मैंने इसे हल कर लिया है और यह कितनी मूर्खतापूर्ण त्रुटि थी!

मूल रूप से हेडर नाम के अंत में एक जगह थी।

पायथन क्या चाहता था/उम्मीद कर रहा था:

days_off = (df1['DaysOff '][i])

जबकि मैं इसे दे रहा था:

days_off = (df1['DaysOff'][i])

बहुत ही मूर्खतापूर्ण मानवीय भूल। हालांकि इसमें देखने वाले सभी लोगों के लिए धन्यवाद

0
MRL 4 नवम्बर 2019, 13:42

बस एक कूबड़, लेकिन आपका त्रुटि संदेश बताता है कि आप अपने डेटाफ़्रेम कॉलम को days_off कुंजी के साथ एक्सेस करने का प्रयास कर रहे हैं, जब यह DaysOff होना चाहिए। मुझे आपके द्वारा प्रदान किए गए कोड में कोई स्थान नहीं दिख रहा है जहां ऐसा होता है, लेकिन मैं यह सुनिश्चित करने के लिए आपकी स्रोत कोड फ़ाइल की दोबारा जांच करूंगा कि आप सही कुंजी नाम का उपयोग कर रहे हैं।

1
Jack Taylor 4 नवम्बर 2019, 01:31