質問編集履歴
3
内容の明確化
test
CHANGED
File without changes
|
test
CHANGED
@@ -112,6 +112,14 @@
|
|
112
112
|
|
113
113
|
![イメージ説明](c3108a93a078c21e5733a4eea460b28b.png)
|
114
114
|
|
115
|
+
|
116
|
+
|
117
|
+
### tiitoiさんにご教授して頂いたコードを動かした時の結果
|
118
|
+
|
119
|
+
![イメージ説明](94f825b3941dcabec610eb3445eafc5b.png)
|
120
|
+
|
121
|
+
|
122
|
+
|
115
123
|
### 解決したい事
|
116
124
|
|
117
125
|
関数(これ自体がしっかりと動くものかは別として)からはエラーコードが吐き出されない
|
2
問題点が変わったので、書き直しました。
test
CHANGED
File without changes
|
test
CHANGED
@@ -1,6 +1,8 @@
|
|
1
1
|
### 前提・実現したいこと
|
2
2
|
|
3
|
-
Pythonにおいて、ファイルの形式(拡張子)をif文で判別して、読み込み方を変える関数を作成しています。
|
3
|
+
Pythonにおいて、ファイルの形式(拡張子)をif文で判別して、読み込み方を変える関数を作成しています。(文法的には正しくても、意図した通りに動くかは別として)関数は作成できたのですが、
|
4
|
+
|
5
|
+
実際に関数を呼び出してファイルを読み込む段階で上手く動きません。
|
4
6
|
|
5
7
|
|
6
8
|
|
@@ -26,6 +28,8 @@
|
|
26
28
|
|
27
29
|
pd.read_table(df1, encoding="shift-jis")
|
28
30
|
|
31
|
+
|
32
|
+
|
29
33
|
```
|
30
34
|
|
31
35
|
### 該当のデータコード② ファイルの拡張子と指定した拡張子の演算記号がis(2019/06/17 22:00以降)
|
@@ -44,27 +48,89 @@
|
|
44
48
|
|
45
49
|
pd.read_table(df1, encoding="shift-jis")
|
46
50
|
|
51
|
+
|
52
|
+
|
53
|
+
os.chdir("C://Users//For Programming//Documents//Python Scripts3")
|
54
|
+
|
55
|
+
df1 = pd.read_csv("AAA.csv")
|
56
|
+
|
57
|
+
|
58
|
+
|
59
|
+
identification_filetype(df1)
|
60
|
+
|
47
61
|
```
|
48
62
|
|
49
63
|
### 発生している問題・エラーメッセージ(2019/06/17 22:00以降)
|
50
64
|
|
51
65
|
```
|
52
66
|
|
67
|
+
---------------------------------------------------------------------------
|
68
|
+
|
69
|
+
TypeError Traceback (most recent call last)
|
70
|
+
|
71
|
+
<ipython-input-31-7e076d001f76> in <module>()
|
72
|
+
|
73
|
+
----> 1 identification_filetype(df1)
|
74
|
+
|
75
|
+
|
76
|
+
|
77
|
+
<ipython-input-29-c1e0414762b5> in identification_filetype(df1)
|
78
|
+
|
79
|
+
1 def identification_filetype (df1):
|
80
|
+
|
81
|
+
----> 2 path, ext =os.path.splitext(df1)
|
82
|
+
|
83
|
+
3 if ext is".csv":
|
84
|
+
|
85
|
+
4 pd.read_csv(df1, encoding="shift-jis")
|
86
|
+
|
87
|
+
5 elif ext is".txt":
|
88
|
+
|
89
|
+
|
90
|
+
|
91
|
+
~\Anaconda3\lib\ntpath.py in splitext(p)
|
92
|
+
|
93
|
+
200
|
94
|
+
|
53
|
-
|
95
|
+
201 def splitext(p):
|
96
|
+
|
97
|
+
--> 202 p = os.fspath(p)
|
98
|
+
|
99
|
+
203 if isinstance(p, bytes):
|
100
|
+
|
101
|
+
204 return genericpath._splitext(p, b'\', b'/', b'.')
|
102
|
+
|
103
|
+
|
104
|
+
|
105
|
+
TypeError: expected str, bytes or os.PathLike object, not DataFrame
|
54
106
|
|
55
107
|
```
|
56
108
|
|
109
|
+
### 想定しているデータフレーム
|
110
|
+
|
111
|
+
![イメージ説明](83350031a6920698243cdfa4fa4ee6f2.png)
|
112
|
+
|
113
|
+
![イメージ説明](c3108a93a078c21e5733a4eea460b28b.png)
|
114
|
+
|
57
115
|
### 解決したい事
|
58
116
|
|
59
|
-
|
117
|
+
関数(これ自体がしっかりと動くものかは別として)からはエラーコードが吐き出されない
|
60
118
|
|
61
|
-
|
119
|
+
のですが、関数を使ってファイルを読み込む時に上記の様なエラーコードが発生しました。
|
62
|
-
|
63
|
-
完全な解決策でなくても構わないので、大まかにでも解決への道筋を示していただけるだけ
|
64
|
-
|
65
|
-
でも、とても助かります。宜しくお願い致します。
|
66
120
|
|
67
121
|
|
122
|
+
|
123
|
+
「path, ext =os.path.splitext(df1)」に対して、
|
124
|
+
|
125
|
+
「xpected str, bytes or os.PathLike object, not DataFrame」
|
126
|
+
|
127
|
+
|
128
|
+
|
129
|
+
というエラーコードが出ているのを見るとos.pathで読み込んでいるものがファイルではなく
|
130
|
+
|
131
|
+
DataFrameになってしまっている感じがするので、ファイル形式で読みめれば(多分)
|
132
|
+
|
133
|
+
解決できるのではと思うのですが、方法が分からないです。
|
68
134
|
|
69
135
|
|
70
136
|
|
1
もう一度コードを実装したらなぜかエラーコードが出なくなったので書き直しました。
test
CHANGED
File without changes
|
test
CHANGED
@@ -2,71 +2,11 @@
|
|
2
2
|
|
3
3
|
Pythonにおいて、ファイルの形式(拡張子)をif文で判別して、読み込み方を変える関数を作成しています。
|
4
4
|
|
5
|
-
### 発生している問題・エラーメッセージ
|
6
|
-
|
7
|
-
```
|
8
|
-
|
9
|
-
ValueError Traceback (most recent call last)
|
10
|
-
|
11
|
-
<ipython-input-38-4134440177b2> in <module>()
|
12
|
-
|
13
|
-
4 pd.read_csv(df1, encoding="shift-jis")
|
14
|
-
|
15
|
-
5 elif ext==".txt":
|
16
|
-
|
17
|
-
----> 6 pd.read_table(df1, encoding="shift-jis")
|
18
5
|
|
19
6
|
|
20
7
|
|
21
|
-
~\Anaconda3\lib\site-packages\pandas\io\parsers.py in parser_f(filepath_or_buffer, sep, delimiter, header, names, index_col, usecols, squeeze, prefix, mangle_dupe_cols, dtype, engine, converters, true_values, false_values, skipinitialspace, skiprows, nrows, na_values, keep_default_na, na_filter, verbose, skip_blank_lines, parse_dates, infer_datetime_format, keep_date_col, date_parser, dayfirst, iterator, chunksize, compression, thousands, decimal, lineterminator, quotechar, quoting, escapechar, comment, encoding, dialect, tupleize_cols, error_bad_lines, warn_bad_lines, skipfooter, doublequote, delim_whitespace, low_memory, memory_map, float_precision)
|
22
8
|
|
23
|
-
676 skip_blank_lines=skip_blank_lines)
|
24
|
-
|
25
|
-
677
|
26
|
-
|
27
|
-
--> 678 return _read(filepath_or_buffer, kwds)
|
28
|
-
|
29
|
-
679
|
30
|
-
|
31
|
-
680 parser_f.__name__ = name
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
~\Anaconda3\lib\site-packages\pandas\io\parsers.py in _read(filepath_or_buffer, kwds)
|
36
|
-
|
37
|
-
|
9
|
+
### 該当のデータコード① ファイルの拡張子と指定した拡張子の演算記号が==(2019/06/17 22:00以降)
|
38
|
-
|
39
|
-
423 filepath_or_buffer, _, compression, should_close = get_filepath_or_buffer(
|
40
|
-
|
41
|
-
--> 424 filepath_or_buffer, encoding, compression)
|
42
|
-
|
43
|
-
425 kwds['compression'] = compression
|
44
|
-
|
45
|
-
426
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
~\Anaconda3\lib\site-packages\pandas\io\common.py in get_filepath_or_buffer(filepath_or_buffer, encoding, compression, mode)
|
50
|
-
|
51
|
-
216 if not is_file_like(filepath_or_buffer):
|
52
|
-
|
53
|
-
217 msg = "Invalid file path or buffer object type: {_type}"
|
54
|
-
|
55
|
-
--> 218 raise ValueError(msg.format(_type=type(filepath_or_buffer)))
|
56
|
-
|
57
|
-
219
|
58
|
-
|
59
|
-
220 return filepath_or_buffer, None, compression, False
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
ValueError: Invalid file path or buffer object type: <class 'pandas.core.frame.DataFrame'>
|
64
|
-
|
65
|
-
```
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
### 該当のソースコード
|
70
10
|
|
71
11
|
```Python3
|
72
12
|
|
@@ -88,7 +28,31 @@
|
|
88
28
|
|
89
29
|
```
|
90
30
|
|
31
|
+
### 該当のデータコード② ファイルの拡張子と指定した拡張子の演算記号がis(2019/06/17 22:00以降)
|
91
32
|
|
33
|
+
```Python3
|
34
|
+
|
35
|
+
def identification_filetype (df1):
|
36
|
+
|
37
|
+
path, ext =os.path.splitext(df1)
|
38
|
+
|
39
|
+
if ext is".csv":
|
40
|
+
|
41
|
+
pd.read_csv(df1, encoding="shift-jis")
|
42
|
+
|
43
|
+
elif ext is".txt":
|
44
|
+
|
45
|
+
pd.read_table(df1, encoding="shift-jis")
|
46
|
+
|
47
|
+
```
|
48
|
+
|
49
|
+
### 発生している問題・エラーメッセージ(2019/06/17 22:00以降)
|
50
|
+
|
51
|
+
```
|
52
|
+
|
53
|
+
特にエラーコードは発生していない。
|
54
|
+
|
55
|
+
```
|
92
56
|
|
93
57
|
### 解決したい事
|
94
58
|
|
@@ -96,9 +60,11 @@
|
|
96
60
|
|
97
61
|
df1から上手くファイルの拡張子を受け取れてないような感じがするのですが、解決策が分かりません。
|
98
62
|
|
99
|
-
完全な解決策でなくても構わないので、大まかにでも解決への道筋を示していただけるだけ
|
63
|
+
完全な解決策でなくても構わないので、大まかにでも解決への道筋を示していただけるだけ
|
100
64
|
|
101
|
-
とても助かります。宜しくお願い致します。
|
65
|
+
でも、とても助かります。宜しくお願い致します。
|
66
|
+
|
67
|
+
|
102
68
|
|
103
69
|
|
104
70
|
|