这是一个待解决的问题 主要还是引发自 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中就不行了



