索引错误:索引14285超出了轴0的大小为14285的范围

时间:2019-05-31 12:43:07

标签: python pandas export-to-csv

我正在尝试将数据帧写入csv文件。 当我运行此命令df.to_csv("somefile.csv")时。 我遇到以下错误:

  

IndexError:索引14285超出了大小为14285的轴0的边界

我检查了索引和数据的长度,两者相同。

df = pd.DataFrame(preds,columns = ['PA','PB','PC','PD','PE','PF','PG'], index =[X_valid_full['ID']])

len(preds)

len(X_valid_full['ID'].unique())

---------------------------------------------------------------------------
IndexError                                Traceback (most recent call last)
<ipython-input-69-4113bef3e95d> in <module>
----> 1 df.to_csv("somefile.csv")

c:\users\appdata\local\programs\python\python37\lib\site-packages\pandas\core\generic.py in to_csv(self, path_or_buf, sep, na_rep, float_format, columns, header, index, index_label, mode, encoding, compression, quoting, quotechar, line_terminator, chunksize, tupleize_cols, date_format, doublequote, escapechar, decimal)
   3018                                  doublequote=doublequote,
   3019                                  escapechar=escapechar, decimal=decimal)
-> 3020         formatter.save()
   3021 
   3022         if path_or_buf is None:

c:\users\appdata\local\programs\python\python37\lib\site-packages\pandas\io\formats\csvs.py in save(self)
    170                 self.writer = UnicodeWriter(f, **writer_kwargs)
    171 
--> 172             self._save()
    173 
    174         finally:

c:\users\appdata\local\programs\python\python37\lib\site-packages\pandas\io\formats\csvs.py in _save(self)
    286                 break
    287 
--> 288             self._save_chunk(start_i, end_i)
    289 
    290     def _save_chunk(self, start_i, end_i):

c:\users\appdata\local\programs\python\python37\lib\site-packages\pandas\io\formats\csvs.py in _save_chunk(self, start_i, end_i)
    313 
    314         libwriters.write_csv_rows(self.data, ix, self.nlevels,
--> 315                                   self.cols, self.writer)

pandas\_libs\writers.pyx in pandas._libs.writers.write_csv_rows()

IndexError: index 14285 is out of bounds for axis 0 with size 14285

1 个答案:

答案 0 :(得分:0)

看起来您可能正在传递dataframe构造函数参数,索引,带有系列的列表,而不仅仅是原始索引。有效果

在[22]中:df = pd.DataFrame(preds,columns = ['PA','PB','PC','PD','PE','PF','PG','PH' ,'PI','PJ'],索引= [X_valid_full ['ID']])

在[23]中:df 出[23]:

    PA  PB  PC  PD  PE  PF  PG  PH  PI  PJ
ID
0    0   1   2   3   4   5   6   7   8   9
1   10  11  12  13  14  15  16  17  18  19
2   20  21  22  23  24  25  26  27  28  29
3   30  31  32  33  34  35  36  37  38  39
4   40  41  42  43  44  45  46  47  48  49
5   50  51  52  53  54  55  56  57  58  59
6   60  61  62  63  64  65  66  67  68  69
7   70  71  72  73  74  75  76  77  78  79
8   80  81  82  83  84  85  86  87  88  89
9   90  91  92  93  94  95  96  97  98  99

但是我仍然能够通过to_csv来编写csv文件。我认为可能正在发生的是您的“ ID”列中存在重复的ID。

因为您在len(X_valid_full ['ID']。unique())中使用了唯一性,所以您获得的大小与pred相同。

解决此问题的一种方法可能是在调用DataFrame构造函数之前或在没有inplace = True的构造函数中使用X_valid_full.set_index('ID',inplace = True)。您还可以使用X_valid_full ['ID']。unique()作为索引,因为它看起来与pred 1维尺寸相同。