基本问题:
我有几个“过去”和“现在”变量,我想对它们执行简单的“按行”百分比更改。例如:((exports_now - exports_past)/exports_past))
。
这两个问题完成了这一点,但是当我尝试类似的方法时,我得到一个错误,即我的函数 deltas get an unknown parameter axis
。
数据示例:
exports_ past exports_ now imports_ past imports_ now ect.(6 other pairs)
.23 .45 .43 .22 1.23
.13 .21 .47 .32 .23
0 0 .41 .42 .93
.23 .66 .43 .22 .21
0 .12 .47 .21 1.23
按照第一个问题的答案,
我的解决方案是使用这样的函数:
def deltas(row):
'''
simple pct change
'''
if int(row[0]) == 0 and int(row[1]) == 0:
return 0
elif int(row[0]) == 0:
return np.nan
else:
return ((row[1] - row[0])/row[0])
并应用这样的功能:
df['exports_delta'] = df.groupby(['exports_past', 'exports_now']).apply(deltas, axis=1)
这会产生这个错误:TypeError: deltas() got an unexpected keyword argument 'axis'
关于如何绕过轴参数错误的任何想法?或者更优雅的计算 pct 变化的方法?我的问题的关键是我需要能够在几个不同的列对中应用这个函数,所以像第二个问题中的答案那样硬编码列名是不可取的。谢谢!