回答編集履歴

1

質問を受けて追記

2021/06/01 06:46

投稿

TakaiY
TakaiY

スコア13792

test CHANGED
@@ -15,3 +15,63 @@
15
15
 
16
16
 
17
17
  解決策は実際にやりたいことによって違います。
18
+
19
+
20
+
21
+ ---
22
+
23
+ もし、リストに入っているカラムだけ抜きだしたデータフレームを作りたいのであれば、 このようにします。 (他にもやりかたありますが)
24
+
25
+ また、元の質問についてですが、カラム名を加工したいのでなければ、変数名をそのまま指定してしまえばOKです。
26
+
27
+ 変数名にpushを使っていますが、pushは関数名と被っていて、思わぬ影響がでるので使わないほうがいいでしょう。
28
+
29
+
30
+
31
+ ```python
32
+
33
+
34
+
35
+ df0 = pd.DataFrame()
36
+
37
+ for c in push_col:
38
+
39
+   df0[c] = df[c]
40
+
41
+
42
+
43
+ print(df0)
44
+
45
+ ```
46
+
47
+
48
+
49
+ ちなみに、修正後の質問のコードは動きそうですが、前にも書いたとおり、for文の中でdfに代入しているのが致命的です。dfは元のデータを保持しているので、ここでdfに代入してしまうと、元のデータが消えてしまいます。
50
+
51
+
52
+
53
+ ```python
54
+
55
+ df0 = pd.DataFrame()
56
+
57
+ for push in push_col:
58
+
59
+ tmp_df = df['{0}'.format(push)]
60
+
61
+ df0 = pd.concat((df0,tmp_df),axis=1)
62
+
63
+ ```
64
+
65
+ こうすれば動きそうです。
66
+
67
+
68
+
69
+ また、どちらの やりかたにしても、df0の内容はdfの内容と同じものを参照しているので、この後でやりたい作業によっては、copyをしておいたほうがいいかもしれません。
70
+
71
+
72
+
73
+ ```python
74
+
75
+ df0 = df0.copy()
76
+
77
+ ```