python中的dataframe 剔除部分數據後,索引消失,重新建立索引

今天在處理一個數據的過程中出現問題,python中的dataframe 剔除部分數據後,索引消失,遍歷就出錯,
報錯形式如下

Traceback (most recent call last):
  File "D:/pycreate/tianchi_糖尿病/data_pre/split_data.py", line 53, in <module>
    handler_data()
  File "D:/pycreate/tianchi_糖尿病/data_pre/split_data.py", line 32, in handler_data
    print(indexdf["S"][i])
  File "D:\ANACONDA\ana3.5.2\lib\site-packages\pandas\core\series.py", line 766, in __getitem__
    result = self.index.get_value(self, key)
  File "D:\ANACONDA\ana3.5.2\lib\site-packages\pandas\core\indexes\base.py", line 3103, in get_value
    tz=getattr(series.dtype, 'tz', None))
  File "pandas\_libs\index.pyx", line 106, in pandas._libs.index.IndexEngine.get_value
  File "pandas\_libs\index.pyx", line 114, in pandas._libs.index.IndexEngine.get_value
  File "pandas\_libs\index.pyx", line 162, in pandas._libs.index.IndexEngine.get_loc
  File "pandas\_libs\hashtable_class_helper.pxi", line 958, in pandas._libs.hashtable.Int64HashTable.get_item
  File "pandas\_libs\hashtable_class_helper.pxi", line 964, in pandas._libs.hashtable.Int64HashTable.get_item
KeyError: 31

後來找了以下是由於我對原始數據刪除了部分異常數據導致的,。

#會導致原索引丟失,30-32
    indexdf=indexdf[indexdf["EE"]!=0]

解決方案

   #重新定義索引,才能支持遍歷
    # indexdf = indexdf.reset_index(drop=True)

代碼:

  indexdf=pd.read_table("0.ann",sep="\s+",names=["T","TC","S","E","name"])
  indexdf["EE"] = indexdf["E"].apply(lambda x: x if ";" not in x else 0)
  indexdf=indexdf[indexdf["EE"]!=0]
        #重新定義索引,才能支持遍歷
 indexdf = indexdf.reset_index(drop=True)
 for i in range(len(indexdf)):
    
            print(indexdf["S"][i])
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章