我正在尝试将数据帧写入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
答案 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维尺寸相同。