栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

处理dataframe遇到pandas.core.indexing.IndexingError: Too many indexers

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

处理dataframe遇到pandas.core.indexing.IndexingError: Too many indexers

这是一个待解决的问题 主要还是引发自 pandas.dataframe数据格式为什么不能用 除列名以外的方式 定位到列 也有可能是我不知道 。有人可能说可以用索引 但是 返回的并不是series类型 就算是 也没法计算 求求大神帮看看

背景 一个自动化脚本 需要用已有的两列计算环比后生成新的一列

df_asset_week[ vsLastWeek ] df_asset_week.apply(lambda x: (x[ 2021-09-20 ]-x[ 2021-09-13 ])/x[ 2021-09-13 ], axis 1)

需要做以上处理但是我不想每次都手动修改列名 日期是随着时间的推进而变化的 所以我需要用索引把列取出来

df_asset_week[ vsLastWeek ] (df_asset_week.iloc[:,[5]].values/df_transaction_week.iloc[:,[6]]).values

一开始还没有values 于是返回的就是个object 类型 无法做计算而且会包含列名 于是加上了 .values 方法 返回的是一个series类型 按道理说和 日期提取时候的类型 一样了 那就应该可以计算了 但是开始报错 to many indexers 看了好一些解析 说是 多个列名加上[]即可 但是我这里并不包含多个列名呀
后续我还尝试了很多形式 都报同样的错误

df_asset_week[ vsLastWeek ] (df_asset_week.iloc[:,[5:5]].values/df_transaction_week.iloc[:,[6:6]]).values
df_asset_week[ vsLastWeek ] (df_asset_week.iloc[:,5].values/df_transaction_week.iloc[:,6]).values

现在还没有空细细地找官方文档里相关的说明 我打算拆开赋予list变量 用list来计算试试看……

还有还有 这样子计算是可以出正确结果的

(df_asset_week.iloc[:,6]-df_asset_week.iloc[:,7])/df_asset_week.iloc[:,7]

但是就是放在apply中就不行了

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/268215.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号