teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

予約語について追記

2018/12/25 14:16

投稿

8524ba23
8524ba23

スコア38352

answer CHANGED
@@ -1,6 +1,11 @@
1
1
  以下のような感じでできます。
2
2
  対象.xlsx元ファイルにファイル名列を追加するのは少々無駄なので、読込後の`df`に対して追加しています。
3
3
  元ファイルに列を追加するには、ソースコード中の処理①をコメントアウトし、処理②を生かしてください。
4
+
5
+ あと、変数名に`list`のような予約語を使ってはいけません(使えるんだけど)。
6
+ その予約語が持つ動作をしなくなってしまいます。
7
+ 例えば集合をリストに変換する`x = list({1,2,3})`のようなコードが動かなくなってしまいます。
8
+ 以下コードでは`lst`に書き換えています。
4
9
  ```Python
5
10
  import glob
6
11
  import os.path
@@ -19,7 +24,7 @@
19
24
 
20
25
  #エクセルファイルを連結する
21
26
  excel_files = glob.glob("*.xlsx")
22
- list = []
27
+ lst= []
23
28
  for f in excel_files:
24
29
  name,ext = os.path.splitext(f)
25
30
 
@@ -29,7 +34,7 @@
29
34
  #add_name(f,name) # 処理② ファイル名列を追加する
30
35
  df = pd.read_excel(f,header=None)
31
36
  df[2] = name # 処理① 位置はD列(=2)固定
32
- list.append(df)
37
+ lst.append(df)
33
- df = pd.concat(list,sort = True)
38
+ df = pd.concat(lst,sort = True)
34
39
  df.to_excel("ALL.xlsx",header=None,index=False)
35
40
  ```