回答編集履歴

1

追記

2019/04/22 16:05

投稿

hayataka2049
hayataka2049

スコア30933

test CHANGED
@@ -89,3 +89,147 @@
89
89
  2. 処理対象ファイルのリストを`for`でループさせ、結果を結果用の`list`にでも入れる
90
90
 
91
91
  3. 結合
92
+
93
+
94
+
95
+ #### 追記
96
+
97
+ ```python
98
+
99
+ import os
100
+
101
+ import pandas as pd
102
+
103
+ import numpy as np
104
+
105
+ import glob
106
+
107
+ os.chdir("C://Users//For Programming//Documents//Python Scripts2")
108
+
109
+ list = []
110
+
111
+ filelist = os.listdir()
112
+
113
+ for file in filelist:
114
+
115
+ df = pd.read_csv(file,encoding="shift-jis")
116
+
117
+ for g in df:
118
+
119
+ df['X coordinate'] = int()
120
+
121
+ df['Y coordinate'] = int()
122
+
123
+ df['X coordinate'] = (((df['X'].rank(method='first') + 9) //10)).astype(int)
124
+
125
+ df['Y coordinate'] = (((df['Y'].rank(method='first') + 9) //10)).astype(int)
126
+
127
+ df2 = list.append(pd.read_csv(g,encoding="shift-jis")) #ここから上手くlist.apendを使えない。
128
+
129
+ for h in df2:
130
+
131
+ df3 = pd.concat(list)
132
+
133
+ df3.to_csv("TOTAL.csv", encoding='shift_jis')
134
+
135
+ ```
136
+
137
+
138
+
139
+ > ・「 for file in filelist:」のfor文でフォルダー内のファイルを読みこむ事が出来ているのか
140
+
141
+
142
+
143
+ これはできています。
144
+
145
+
146
+
147
+
148
+
149
+ > ・「for g in df:」の操作で、ひとつひとつのファイルに対して指定の処理を加えるのはこのコード合っているのか
150
+
151
+
152
+
153
+ できていません。gが一つ一つのファイルになるという認識であれば、間違いです。printして何が出ているのか確認してみてください。
154
+
155
+
156
+
157
+ > ・「for g in df:」の最終行で処理を加えた後に保存?新規?のDataFrameとして処理を反映できてきなのでlist_appendが上手くできていないと思うので、ファイルに処理を加えた後にどのようにコードをしめればいいか。
158
+
159
+
160
+
161
+ そのコードを活かしてやるとしたら、こんな感じでいいのではないでしょうか。動くかどうかは確認していません。
162
+
163
+
164
+
165
+ ```python
166
+
167
+ lst = []
168
+
169
+ for file in filelist:
170
+
171
+ df = pd.read_csv(file,encoding="shift-jis")
172
+
173
+ df['X coordinate'] = int()
174
+
175
+ df['Y coordinate'] = int()
176
+
177
+ df['X coordinate'] = (((df['X'].rank(method='first') + 9) //10)).astype(int)
178
+
179
+ df['Y coordinate'] = (((df['Y'].rank(method='first') + 9) //10)).astype(int)
180
+
181
+ lst.append(df)
182
+
183
+
184
+
185
+ df3 = pd.concat(lst)
186
+
187
+ df3.to_csv("TOTAL.csv", encoding='shift_jis')
188
+
189
+ ```
190
+
191
+
192
+
193
+ ちなみに、私が先の回答で書いた関数を定義する方法だと、きっとこんな感じ。
194
+
195
+
196
+
197
+ ```python
198
+
199
+ def f(df):
200
+
201
+ df['X coordinate'] = int()
202
+
203
+ df['Y coordinate'] = int()
204
+
205
+ df['X coordinate'] = (((df['X'].rank(method='first') + 9) //10)).astype(int)
206
+
207
+ df['Y coordinate'] = (((df['Y'].rank(method='first') + 9) //10)).astype(int)
208
+
209
+ return df
210
+
211
+
212
+
213
+ lst = []
214
+
215
+ for file in filelist:
216
+
217
+ df = pd.read_csv(file,encoding="shift-jis")
218
+
219
+ df = f(df)
220
+
221
+ lst.append(df)
222
+
223
+
224
+
225
+ df3 = pd.concat(lst)
226
+
227
+ df3.to_csv("TOTAL.csv", encoding='shift_jis')
228
+
229
+
230
+
231
+ ```
232
+
233
+
234
+
235
+ 特に本質的な違いはないです。