iloc error: IndexError: single positional indexer is out-of-bounds

iloc error: IndexError: single positional indexer is out-of-bounds

我正在尝试编写使用 os.dir 循环遍历目录的代码,并将所有文件名添加到名为文件名的 pd.dataframe 第一列中。但是,我收到以下错误。

error: 
---------------------------------------------------------------------------
IndexError                                Traceback (most recent call last)
/tmp/ipykernel_18849/3125259842.py in <module>
     11     for k,j in enumerate(os.listdir('/home/ubuntu/imageTrain_dobby/SKJEWELLERY/BC4U/google_version/v1.1/lingyau_lee/output/test'+'/'+i)):
     12         #print(k)
---> 13         dfTest.iloc[k]['filename']= j
     14 
     15 

~/anaconda3/envs/myenv/lib/python3.7/site-packages/pandas/core/indexing.py in __getitem__(self, key)
    877 
    878             maybe_callable = com.apply_if_callable(key, self.obj)
--> 879             return self._getitem_axis(maybe_callable, axis=axis)
    880 
    881     def _is_scalar_access(self, key: Tuple):

~/anaconda3/envs/myenv/lib/python3.7/site-packages/pandas/core/indexing.py in _getitem_axis(self, key, axis)
   1494 
   1495             # validate the location
-> 1496             self._validate_integer(key, axis)
   1497 
   1498             return self.obj._ixs(key, axis=axis)

~/anaconda3/envs/myenv/lib/python3.7/site-packages/pandas/core/indexing.py in _validate_integer(self, key, axis)
   1435         len_axis = len(self.obj._get_axis(axis))
   1436         if key >= len_axis or key < -len_axis:
-> 1437             raise IndexError("single positional indexer is out-of-bounds")
   1438 
   1439     # -------------------------------------------------------------------

IndexError: single positional indexer is out-of-bounds
import os
import pandas as pd
    
dfTest = pd.DataFrame(columns = ['filename', 'class'])
TrainList, TestList =[],[]
TrainDic, TestDic = {},{}
    
     
for i in os.listdir('/home/ubuntu/imageTrain_dobby/SKJEWELLERY/BC4U/google_version/v1.1/lingyau_lee/output/test'):
    for k,j in enumerate(os.listdir('/home/ubuntu/imageTrain_dobby/SKJEWELLERY/BC4U/google_version/v1.1/lingyau_lee/output/test'+'/'+i)): 
            
        dfTest.iloc[k]['filename']= j

由于您的数据框是空的并且您想向其中添加行,因此您可以使用 loc。您不能使用 iloc,因为 i 超出数据帧长度。

for i in os.listdir('/home/ubuntu/imageTrain_dobby/SKJEWELLERY/BC4U/google_version/v1.1/lingyau_lee/output/test'):
    for k,j in enumerate(os.listdir('/home/ubuntu/imageTrain_dobby/SKJEWELLERY/BC4U/google_version/v1.1/lingyau_lee/output/test'+'/'+i)): 
        dfTest.loc[k, 'filename'] = j