Ошибка индекса: индекс 14285 выходит за пределы оси 0 с размером 14285 - PullRequest
0 голосов
/ 31 мая 2019

Я пытаюсь записать фрейм данных в CSV-файл. когда я запускаю эту команду df.to_csv("somefile.csv"). Я получаю ошибку ниже:

IndexError: индекс 14285 выходит за границы оси 0 с размером 14285

Я проверил длину индекса и данных, оба одинаковы.

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 голосов
/ 31 мая 2019

Похоже, что вы можете передавать аргумент конструктора dataframe, индекс, список с серией, а не только необработанный индекс.Это имеет эффект

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

В [23]: df Out [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' есть повторяющиеся идентификаторы.

Поскольку вы используете unique в len (X_valid_full ['ID']. Unique ()), вы получаете то же самоеsize как preds.

Чтобы решить эту проблему, можно использовать X_valid_full.set_index ('ID', inplace = True) либо до вызова конструктора DataFrame, либо в конструкторе без inplace = True.Вы также можете использовать X_valid_full ['ID']. Unique () в качестве индекса, так как он кажется того же размера, что и размер вашего первого размера.

...