質問編集履歴

1

コードが一行不足していました。最低限解決したい部分にフォーカスして質問名称を変えました。

2021/10/09 00:38

投稿

Oisan
Oisan

スコア15

test CHANGED
@@ -1 +1 @@
1
- リスト化した列名の一部と数字をループを使ってdataframの列を追加したい。
1
+ dataframeをループを使って列を追加した際の列名の変数展開ができない。
test CHANGED
@@ -1,6 +1,10 @@
1
1
  #実現したいこと
2
2
 
3
-  列名の一部とそれに付随する数字等を組み合わせて、新しい列名と計算結果をデータフレームに追加したい。
3
+  列名の一部とそれに付随する数字等を組み合わせて、新しい列名と計算結果をデータフレームに追加したいと考えています
4
+
5
+  現時点において、列名の変数展開ができておらず、そもそもできないのか、書き方が悪いのかわかりません。
6
+
7
+  特に変数展開の部分においてだけでもご教示いただけると大変助かります。
4
8
 
5
9
 
6
10
 
@@ -8,7 +12,7 @@
8
12
 
9
13
   以下のコードを実行することで、欲しい結果は得られます。
10
14
 
11
-  しかし,元データの売上高以外の項目も同様に成長率等を求めたいと考えていますが、同じことを書くのは無駄なように感じています。
15
+  しかし,元データの売上高以外の項目も同様に成長率等を求めたいと考えていますが、同じことを書くのは無駄なように感じています。なお、この場合は、変数展開の問題はありません。
12
16
 
13
17
 
14
18
 
@@ -50,6 +54,8 @@
50
54
 
51
55
   なお、ユニークな証券コード(最大の年度)に対して、追加する列を加えていきたいと考えているため、一度groupbyで最新年度だけのデータフレームを作っています。
52
56
 
57
+  プログラム自体は動いているのですが、列名の変数展開ができていません。
58
+
53
59
  ```Python
54
60
 
55
61
 
@@ -62,7 +68,9 @@
62
68
 
63
69
  df_only_current = df.groupby('証券コード').max('年度')
64
70
 
65
-
71
+ df['n年前'] = df.groupby('証券コード')['年度'].transform('max')-df['年度']
72
+
73
+
66
74
 
67
75
  #追加する列名一覧
68
76