.iloc requires numeric indexers, got [[1.0 80.0 0 ... 140 0 'overweight']什么意思
时间: 2024-03-03 21:52:04 浏览: 203
这个错误通常表示在使用 Pandas 的 iloc 属性时,传递了非整数类型的索引器,例如传递了一个包含浮点数、字符串等类型的索引器。iloc 属性只能接受整数类型的索引器,用于定位 DataFrame 或 Series 中的行或列。
例如,当你使用类似如下的代码时,就会出现该错误:
```python
import pandas as pd
# 创建一个 DataFrame
df = pd.DataFrame({'col1': [1, 2, 3], 'col2': [4, 5, 6], 'col3': [7, 8, 9]})
# 使用 iloc 提取 DataFrame 的一行
row = df.iloc[[1.0, 2.0], :]
```
在上面的代码中,`iloc[[1.0, 2.0], :]` 尝试使用包含浮点数的列表作为索引器,这会导致错误。要解决这个问题,只需要使用整数类型的索引器即可,例如 `[1, 2]`。
如果你需要使用非整数类型的索引器,可以考虑使用 loc 属性或者索引器方法,例如 `.loc[[1.0, 2.0], :]` 或者 `.iloc[[True, False, True], :]`。这些方法都可以接受非整数类型的索引器。
相关问题
.iloc requires numeric indexers, got什么意思
这个错误提示是因为在使用 Pandas 的 DataFrame 类型时,使用了 iloc 属性,并且传递的索引器不是数值类型。在使用 iloc 属性时,索引器必须是整数或整数序列,不能是其他类型的数据。例如,如果要使用 iloc 获取 DataFrame 的第一行数据,可以使用 df.iloc[0],而不是 df.iloc['first']。因此,要解决这个错误,需要确认传递给 iloc 的索引器是整数或整数序列。
Error: 无法启动线程 .iloc requires numeric indexers, got ['Column24']
抱歉,我之前的回答有误。引起该错误的原因是 iloc 函数需要使用数值型的索引器,而 ['Column2'] 和 ['Column24'] 是字符串类型的列名。如果你想要按照列名来访问数据框中的元素,可以使用 loc 函数。所以正确的写法应该是:
```
forestdata.loc[forestdata.index[-1], 'Column2'] = forestdata.loc[forestdata.index[-2], 'Column24']
```
这行代码的作用与之前的代码是相同的,也是将倒数第二行的 Column24 列的值赋给倒数第一行的 Column2 列。其中 loc 函数用于按标签(行号和列名)访问数据框中的元素,forestdata.index[-1] 和 forestdata.index[-2] 分别表示最后一行和倒数第二行的索引标签,'Column2' 和 'Column24' 分别表示要访问的列名。
阅读全文