基本的な問題:
「行ごと」の単純なパーセント変更を実行したい「過去」と「現在」の変数がいくつかあります。例: ((exports_now - exports_past)/exports_past))
.
これら 2 つの質問はこれを達成しますが、同様の方法を試すと、関数 deltas gets 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 の変化を計算するよりエレガントな方法はありますか? 私の問題のキッカーは、この関数をいくつかの異なる列ペアに適用できる必要があるため、2番目の質問の回答のように列名をハードコーディングすることは望ましくありません。ありがとう!