質問編集履歴

5

実施したいこと、現在の状況を更新しました。

2020/12/15 07:26

投稿

sssan
sssan

スコア10

test CHANGED
File without changes
test CHANGED
@@ -4,13 +4,7 @@
4
4
 
5
5
  コードの流れは以下の通りかと考えています。
6
6
 
7
- わからないこととしては、
8
-
9
- ・上記②における列1だけを0列目に配置するやりかた
7
+ ここで列1だけを0列目に配置するやりかたがわかりません。
10
-
11
- ・上記③で列タイトルをcsvファイル名にするやりかた
12
-
13
- になります。
14
8
 
15
9
 
16
10
 
@@ -34,7 +28,7 @@
34
28
 
35
29
  下のようなcsvが現在出力されています。
36
30
 
37
- |sample|sample|sample|
31
+ |sampleA|sampleB|sampleC|
38
32
 
39
33
  |:--|:--:|--:|
40
34
 
@@ -43,38 +37,6 @@
43
37
  |2000|2000|2000|
44
38
 
45
39
  |3000|3000|3000|
46
-
47
-
48
-
49
- 列ラベル名をファイル名にするためにcsvfile_nameを取得しようとコード8行目を追加しましたが、
50
-
51
- 下記のようなエラーが発生しています。
52
-
53
-
54
-
55
- **現在のエラー**
56
-
57
- ```
58
-
59
- (py36) C:\Users\Username\Desktop\data>python test.py
60
-
61
- Traceback (most recent call last):
62
-
63
- File "test.py", line 8, in <module>
64
-
65
- csvfile_name = os.path.basename(csvfile_path)
66
-
67
- File "C:\Users\Username.conda\envs\py36\lib\ntpath.py", line 236, in basename
68
-
69
- return split(p)[1]
70
-
71
- File "C:\Users\Username.conda\envs\py36\lib\ntpath.py", line 205, in split
72
-
73
- p = os.fspath(p)
74
-
75
- TypeError: expected str, bytes or os.PathLike object, not list
76
-
77
- ```
78
40
 
79
41
 
80
42
 
@@ -128,8 +90,6 @@
128
90
 
129
91
  csvfile_path = glob.glob(data_path + '/*.csv')
130
92
 
131
- csvfile_name = os.path.basename(csvfile_name)
132
-
133
93
 
134
94
 
135
95
  #csvファイルの中身を追加していくリストを用意
@@ -146,9 +106,9 @@
146
106
 
147
107
  csvfile = pd.read_csv(filename)
148
108
 
149
- csvfile_drop = csvfile.drop(csvfile.columns[[0]], axis='columns')
109
+ csvfile_drop = csvfile.drop(csvfile.columns[[0, 1]], axis='columns')
150
110
 
151
- csvfile_drop = csvfile_drop.rename(columns={'列2':'sample'})
111
+ csvfile_drop = csvfile_drop.rename(columns={'列2':filename})
152
112
 
153
113
  total_list.append(csvfile_drop)
154
114
 
@@ -158,8 +118,6 @@
158
118
 
159
119
  #total.csvとして出力
160
120
 
161
- print(df.head())
162
-
163
121
  df.to_csv("total.csv")
164
122
 
165
123
  ```

4

修正しました。

2020/12/15 07:26

投稿

sssan
sssan

スコア10

test CHANGED
File without changes
test CHANGED
@@ -30,7 +30,7 @@
30
30
 
31
31
 
32
32
 
33
- **現在の状況*
33
+ **現在の状況**
34
34
 
35
35
  下のようなcsvが現在出力されています。
36
36
 

3

表が間違っていたため訂正しました。

2020/12/15 04:37

投稿

sssan
sssan

スコア10

test CHANGED
File without changes
test CHANGED
@@ -28,6 +28,8 @@
28
28
 
29
29
 
30
30
 
31
+
32
+
31
33
  **現在の状況*
32
34
 
33
35
  下のようなcsvが現在出力されています。
@@ -41,6 +43,8 @@
41
43
  |2000|2000|2000|
42
44
 
43
45
  |3000|3000|3000|
46
+
47
+
44
48
 
45
49
  列ラベル名をファイル名にするためにcsvfile_nameを取得しようとコード8行目を追加しましたが、
46
50
 

2

現在の状況、エラー、コードを更新しました。宜しくお願い致します。

2020/12/15 04:36

投稿

sssan
sssan

スコア10

test CHANGED
File without changes
test CHANGED
@@ -4,23 +4,73 @@
4
4
 
5
5
  コードの流れは以下の通りかと考えています。
6
6
 
7
- ①空のlist(total_list)を作成。
8
-
9
- ②total_listの0列目に列1を追加。
10
-
11
- ③total_listの1列目以降に各csvファイル内の列2を追加。この際に列タイトルはcsvファイル名にする。
12
-
13
- ④total.csvとして出力
14
-
15
-
16
-
17
- **現在分からないこと**
7
+ からないこととしては、
18
-
19
- ・下記コード実行時に18行目においてValueError: No objects to concatenateというエラーが発生するときの対処法
20
8
 
21
9
  ・上記②における列1だけを0列目に配置するやりかた
22
10
 
23
11
  ・上記③で列タイトルをcsvファイル名にするやりかた
12
+
13
+ になります。
14
+
15
+
16
+
17
+ [作成したい結合後のcsvファイルの中身]
18
+
19
+ |列1|sampleA|sampleB|sampleC|
20
+
21
+ |:--|:--:|:--:|--:|
22
+
23
+ |1|1000|1000|1000|
24
+
25
+ |2|2000|2000|2000|
26
+
27
+ |3|3000|3000|3000|
28
+
29
+
30
+
31
+ **現在の状況*
32
+
33
+ 下のようなcsvが現在出力されています。
34
+
35
+ |sample|sample|sample|
36
+
37
+ |:--|:--:|--:|
38
+
39
+ |1000|1000|1000|
40
+
41
+ |2000|2000|2000|
42
+
43
+ |3000|3000|3000|
44
+
45
+ 列ラベル名をファイル名にするためにcsvfile_nameを取得しようとコード8行目を追加しましたが、
46
+
47
+ 下記のようなエラーが発生しています。
48
+
49
+
50
+
51
+ **現在のエラー**
52
+
53
+ ```
54
+
55
+ (py36) C:\Users\Username\Desktop\data>python test.py
56
+
57
+ Traceback (most recent call last):
58
+
59
+ File "test.py", line 8, in <module>
60
+
61
+ csvfile_name = os.path.basename(csvfile_path)
62
+
63
+ File "C:\Users\Username.conda\envs\py36\lib\ntpath.py", line 236, in basename
64
+
65
+ return split(p)[1]
66
+
67
+ File "C:\Users\Username.conda\envs\py36\lib\ntpath.py", line 205, in split
68
+
69
+ p = os.fspath(p)
70
+
71
+ TypeError: expected str, bytes or os.PathLike object, not list
72
+
73
+ ```
24
74
 
25
75
 
26
76
 
@@ -56,20 +106,6 @@
56
106
 
57
107
 
58
108
 
59
- [作成したい結合後のcsvファイルの中身]
60
-
61
- |列1|sampleA|sampleB|sampleC|
62
-
63
- |:--|:--:|:--:|--:|
64
-
65
- |1|1000|1000|1000|
66
-
67
- |2|2000|2000|2000|
68
-
69
- |3|3000|3000|3000|
70
-
71
-
72
-
73
109
  [現在のコード]
74
110
 
75
111
  ```python
@@ -84,11 +120,11 @@
84
120
 
85
121
  #dataフォルダ内の.csvファイル一覧を取得
86
122
 
87
- csvfile_path = os.path.abspath(r"C:/Users/Username/Desktop/data")
123
+ data_path = os.path.abspath(r"C:/Users/Username/Desktop/data")
88
124
 
89
- csvfolder_path = os.path.dirname(csvfile_path)
125
+ csvfile_path = glob.glob(data_path + '/*.csv')
90
126
 
91
- csvfilelist = glob.glob(csvfolder_path + '/*.csv')
127
+ csvfile_name = os.path.basename(csvfile_name)
92
128
 
93
129
 
94
130
 
@@ -96,23 +132,29 @@
96
132
 
97
133
  total_list = []
98
134
 
135
+ df = []
136
+
99
137
 
100
138
 
101
139
  #読み込むファイルのリストを走査
102
140
 
103
- for filename in csvfilelist:
141
+ for filename in csvfile_path:
104
142
 
105
- total_list.append(pd.read_csv(filename))
143
+ csvfile = pd.read_csv(filename)
106
144
 
145
+ csvfile_drop = csvfile.drop(csvfile.columns[[0]], axis='columns')
107
146
 
147
+ csvfile_drop = csvfile_drop.rename(columns={'列2':'sample'})
108
148
 
109
- #リストを列方向に結合
149
+ total_list.append(csvfile_drop)
110
150
 
111
- df = pd.concat(total_list, axis=1)
151
+ df = pd.concat(total_list, axis=1)
112
152
 
113
153
 
114
154
 
115
155
  #total.csvとして出力
156
+
157
+ print(df.head())
116
158
 
117
159
  df.to_csv("total.csv")
118
160
 

1

躓いている箇所を追加しました。

2020/12/15 04:34

投稿

sssan
sssan

スコア10

test CHANGED
File without changes
test CHANGED
@@ -15,6 +15,8 @@
15
15
 
16
16
 
17
17
  **現在分からないこと**
18
+
19
+ ・下記コード実行時に18行目においてValueError: No objects to concatenateというエラーが発生するときの対処法
18
20
 
19
21
  ・上記②における列1だけを0列目に配置するやりかた
20
22
 
@@ -82,7 +84,7 @@
82
84
 
83
85
  #dataフォルダ内の.csvファイル一覧を取得
84
86
 
85
- csvfile_path = os.path.abspath('C:/Users/Username/Desktop/data')
87
+ csvfile_path = os.path.abspath(r"C:/Users/Username/Desktop/data")
86
88
 
87
89
  csvfolder_path = os.path.dirname(csvfile_path)
88
90
 
@@ -100,7 +102,7 @@
100
102
 
101
103
  for filename in csvfilelist:
102
104
 
103
- li.append(pd.read_csv(filename))
105
+ total_list.append(pd.read_csv(filename))
104
106
 
105
107
 
106
108
 
@@ -118,4 +120,4 @@
118
120
 
119
121
 
120
122
 
121
- 途中でつまづき中々先に進めない状況です。よろしくお願いします。
123
+ よろしくお願いします。