質問編集履歴
3
内容の明確化
title
CHANGED
File without changes
|
body
CHANGED
@@ -55,6 +55,10 @@
|
|
55
55
|
### 想定しているデータフレーム
|
56
56
|

|
57
57
|

|
58
|
+
|
59
|
+
### tiitoiさんにご教授して頂いたコードを動かした時の結果
|
60
|
+

|
61
|
+
|
58
62
|
### 解決したい事
|
59
63
|
関数(これ自体がしっかりと動くものかは別として)からはエラーコードが吐き出されない
|
60
64
|
のですが、関数を使ってファイルを読み込む時に上記の様なエラーコードが発生しました。
|
2
問題点が変わったので、書き直しました。
title
CHANGED
File without changes
|
body
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
### 前提・実現したいこと
|
2
|
-
Pythonにおいて、ファイルの形式(拡張子)をif文で判別して、読み込み方を変える関数を作成しています。
|
2
|
+
Pythonにおいて、ファイルの形式(拡張子)をif文で判別して、読み込み方を変える関数を作成しています。(文法的には正しくても、意図した通りに動くかは別として)関数は作成できたのですが、
|
3
|
+
実際に関数を呼び出してファイルを読み込む段階で上手く動きません。
|
3
4
|
|
4
5
|
|
5
6
|
### 該当のデータコード① ファイルの拡張子と指定した拡張子の演算記号が==(2019/06/17 22:00以降)
|
@@ -12,6 +13,7 @@
|
|
12
13
|
pd.read_csv(df1, encoding="shift-jis")
|
13
14
|
elif ext==".txt":
|
14
15
|
pd.read_table(df1, encoding="shift-jis")
|
16
|
+
|
15
17
|
```
|
16
18
|
### 該当のデータコード② ファイルの拡張子と指定した拡張子の演算記号がis(2019/06/17 22:00以降)
|
17
19
|
```Python3
|
@@ -21,18 +23,49 @@
|
|
21
23
|
pd.read_csv(df1, encoding="shift-jis")
|
22
24
|
elif ext is".txt":
|
23
25
|
pd.read_table(df1, encoding="shift-jis")
|
26
|
+
|
27
|
+
os.chdir("C://Users//For Programming//Documents//Python Scripts3")
|
28
|
+
df1 = pd.read_csv("AAA.csv")
|
29
|
+
|
30
|
+
identification_filetype(df1)
|
24
31
|
```
|
25
32
|
### 発生している問題・エラーメッセージ(2019/06/17 22:00以降)
|
26
33
|
```
|
34
|
+
---------------------------------------------------------------------------
|
35
|
+
TypeError Traceback (most recent call last)
|
36
|
+
<ipython-input-31-7e076d001f76> in <module>()
|
37
|
+
----> 1 identification_filetype(df1)
|
38
|
+
|
39
|
+
<ipython-input-29-c1e0414762b5> in identification_filetype(df1)
|
40
|
+
1 def identification_filetype (df1):
|
41
|
+
----> 2 path, ext =os.path.splitext(df1)
|
42
|
+
3 if ext is".csv":
|
43
|
+
4 pd.read_csv(df1, encoding="shift-jis")
|
44
|
+
5 elif ext is".txt":
|
45
|
+
|
46
|
+
~\Anaconda3\lib\ntpath.py in splitext(p)
|
47
|
+
200
|
27
|
-
|
48
|
+
201 def splitext(p):
|
49
|
+
--> 202 p = os.fspath(p)
|
50
|
+
203 if isinstance(p, bytes):
|
51
|
+
204 return genericpath._splitext(p, b'\', b'/', b'.')
|
52
|
+
|
53
|
+
TypeError: expected str, bytes or os.PathLike object, not DataFrame
|
28
54
|
```
|
55
|
+
### 想定しているデータフレーム
|
56
|
+

|
57
|
+

|
29
58
|
### 解決したい事
|
30
|
-
|
59
|
+
関数(これ自体がしっかりと動くものかは別として)からはエラーコードが吐き出されない
|
31
|
-
|
60
|
+
のですが、関数を使ってファイルを読み込む時に上記の様なエラーコードが発生しました。
|
32
|
-
完全な解決策でなくても構わないので、大まかにでも解決への道筋を示していただけるだけ
|
33
|
-
でも、とても助かります。宜しくお願い致します。
|
34
61
|
|
62
|
+
「path, ext =os.path.splitext(df1)」に対して、
|
63
|
+
「xpected str, bytes or os.PathLike object, not DataFrame」
|
35
64
|
|
65
|
+
というエラーコードが出ているのを見るとos.pathで読み込んでいるものがファイルではなく
|
66
|
+
DataFrameになってしまっている感じがするので、ファイル形式で読みめれば(多分)
|
67
|
+
解決できるのではと思うのですが、方法が分からないです。
|
68
|
+
|
36
69
|
### 補足情報(FW/ツールのバージョンなど)
|
37
70
|
Anaconda
|
38
71
|
Python
|
1
もう一度コードを実装したらなぜかエラーコードが出なくなったので書き直しました。
title
CHANGED
File without changes
|
body
CHANGED
@@ -1,38 +1,8 @@
|
|
1
1
|
### 前提・実現したいこと
|
2
2
|
Pythonにおいて、ファイルの形式(拡張子)をif文で判別して、読み込み方を変える関数を作成しています。
|
3
|
-
### 発生している問題・エラーメッセージ
|
4
|
-
```
|
5
|
-
ValueError Traceback (most recent call last)
|
6
|
-
<ipython-input-38-4134440177b2> in <module>()
|
7
|
-
4 pd.read_csv(df1, encoding="shift-jis")
|
8
|
-
5 elif ext==".txt":
|
9
|
-
----> 6 pd.read_table(df1, encoding="shift-jis")
|
10
3
|
|
11
|
-
~\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)
|
12
|
-
676 skip_blank_lines=skip_blank_lines)
|
13
|
-
677
|
14
|
-
--> 678 return _read(filepath_or_buffer, kwds)
|
15
|
-
679
|
16
|
-
680 parser_f.__name__ = name
|
17
4
|
|
18
|
-
~\Anaconda3\lib\site-packages\pandas\io\parsers.py in _read(filepath_or_buffer, kwds)
|
19
|
-
|
5
|
+
### 該当のデータコード① ファイルの拡張子と指定した拡張子の演算記号が==(2019/06/17 22:00以降)
|
20
|
-
423 filepath_or_buffer, _, compression, should_close = get_filepath_or_buffer(
|
21
|
-
--> 424 filepath_or_buffer, encoding, compression)
|
22
|
-
425 kwds['compression'] = compression
|
23
|
-
426
|
24
|
-
|
25
|
-
~\Anaconda3\lib\site-packages\pandas\io\common.py in get_filepath_or_buffer(filepath_or_buffer, encoding, compression, mode)
|
26
|
-
216 if not is_file_like(filepath_or_buffer):
|
27
|
-
217 msg = "Invalid file path or buffer object type: {_type}"
|
28
|
-
--> 218 raise ValueError(msg.format(_type=type(filepath_or_buffer)))
|
29
|
-
219
|
30
|
-
220 return filepath_or_buffer, None, compression, False
|
31
|
-
|
32
|
-
ValueError: Invalid file path or buffer object type: <class 'pandas.core.frame.DataFrame'>
|
33
|
-
```
|
34
|
-
|
35
|
-
### 該当のソースコード
|
36
6
|
```Python3
|
37
7
|
import pandas as pd
|
38
8
|
import os.path
|
@@ -43,13 +13,26 @@
|
|
43
13
|
elif ext==".txt":
|
44
14
|
pd.read_table(df1, encoding="shift-jis")
|
45
15
|
```
|
46
|
-
|
16
|
+
### 該当のデータコード② ファイルの拡張子と指定した拡張子の演算記号がis(2019/06/17 22:00以降)
|
17
|
+
```Python3
|
18
|
+
def identification_filetype (df1):
|
19
|
+
path, ext =os.path.splitext(df1)
|
20
|
+
if ext is".csv":
|
21
|
+
pd.read_csv(df1, encoding="shift-jis")
|
22
|
+
elif ext is".txt":
|
23
|
+
pd.read_table(df1, encoding="shift-jis")
|
24
|
+
```
|
25
|
+
### 発生している問題・エラーメッセージ(2019/06/17 22:00以降)
|
26
|
+
```
|
27
|
+
特にエラーコードは発生していない。
|
28
|
+
```
|
47
29
|
### 解決したい事
|
48
30
|
恐らく文法的な間違いはないと思うのですが、エラーコードから察するに「os.path.splitext(df1)」の部分で
|
49
31
|
df1から上手くファイルの拡張子を受け取れてないような感じがするのですが、解決策が分かりません。
|
50
|
-
完全な解決策でなくても構わないので、大まかにでも解決への道筋を示していただけるだけ
|
32
|
+
完全な解決策でなくても構わないので、大まかにでも解決への道筋を示していただけるだけ
|
51
|
-
とても助かります。宜しくお願い致します。
|
33
|
+
でも、とても助かります。宜しくお願い致します。
|
52
34
|
|
35
|
+
|
53
36
|
### 補足情報(FW/ツールのバージョンなど)
|
54
37
|
Anaconda
|
55
38
|
Python
|