forest_cols = list(forestdata.columns) df_cols = list(df.columns) idx = [df_cols.index(col) for col in forest_cols] diff = forestdata.loc[forestdata.index[-1]] - df.iloc[-2] diff = diff.loc[:, forest_cols].iloc[:, idx] 出错 :pandas.core.indexing.IndexingError: Too many indexers
时间: 2024-03-31 19:32:40 浏览: 105
python读取excel数据.docx
很抱歉,我的代码有误。您可以尝试以下代码:
```python
forest_cols = list(forestdata.columns)
df_cols = list(df.columns)
idx = [df_cols.index(col) for col in forest_cols]
diff = forestdata.loc[forestdata.index[-1]] - df.iloc[-2]
diff = diff[forest_cols].iloc[:, idx]
```
区别在于,我将 `loc` 方法改为了普通的列索引方式 `[]`,同时将 `loc` 方法和 `iloc` 方法拆开写成两行。这样可以避免出现 `IndexingError` 异常。
另外,如果仍然出现异常,可能是由于 `forestdata` 和 `df` 数据帧中的列名并不完全相同,因此在执行 `idx = [df_cols.index(col) for col in forest_cols]` 时会出现 `ValueError` 异常。您可以打印一下 `idx` 变量的值,检查是否出现了负数或超出 `df_cols` 列表长度的数字,以确定是否出现了这种情况。
阅读全文