import pandas as pd data=pd.read_excel("D:\MATLAB\附件1-葡萄酒品尝评分表.xls",header=1,nrows=376) data.head(30) data.columns=["大类","小类","1",'2','3','4','5','6','7','8','9','10'] data data1=data.dropna(axis=0,how='all') data1 data2=data1.fillna(value=0) data2.head(30) new1=data2.drop(columns='大类') new2=new1.drop(columns='小类') new2.head(30) x=list(range(0,324,14)) y=list(range(1,324,14)) new3=new2.drop(x) new4=new3.drop(y) new4.head(30) Sum=new4.iloc[2,11].sum() 这段代码为什么出现single positional indexer is out-of-bounds报错?
时间: 2024-01-03 13:02:59 浏览: 127
这个报错是因为在索引时越界了。具体来说,`new4.iloc[2,11]`索引了第2行、第11列的元素,但是`new4`的列数不足以支持这个索引。
根据你的代码,`new4`的列数是12(包括了列名),所以最大的有效索引是`new4.iloc[:, 0]`到`new4.iloc[:, 11]`。如果你想计算第2行所有列的和,可以使用`sum()`方法对该行进行求和,而无需指定列索引。修改最后一行代码如下:
```python
Sum = new4.iloc[2].sum()
```
这样就可以计算第2行所有列的和了。如果你想计算所有行的和,可以使用`sum()`方法以`axis=1`参数来对每一行进行求和:
```python
Sum = new4.sum(axis=1)
```
请注意,在这种情况下,`Sum`将是一个Series对象,其中索引为行索引,值为每行的和。如果你只想计算特定行的和,可以使用`new4.iloc[2].sum()`这样的方式。
阅读全文