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

質問編集履歴

3

内容の明確化

2019/06/17 14:11

投稿

Danrussia
Danrussia

スコア44

title CHANGED
File without changes
body CHANGED
@@ -55,6 +55,10 @@
55
55
  ### 想定しているデータフレーム
56
56
  ![イメージ説明](83350031a6920698243cdfa4fa4ee6f2.png)
57
57
  ![イメージ説明](c3108a93a078c21e5733a4eea460b28b.png)
58
+
59
+ ### tiitoiさんにご教授して頂いたコードを動かした時の結果
60
+ ![イメージ説明](94f825b3941dcabec610eb3445eafc5b.png)
61
+
58
62
  ### 解決したい事
59
63
  関数(これ自体がしっかりと動くものかは別として)からはエラーコードが吐き出されない
60
64
  のですが、関数を使ってファイルを読み込む時に上記の様なエラーコードが発生しました。

2

問題点が変わったので、書き直しました。

2019/06/17 14:11

投稿

Danrussia
Danrussia

スコア44

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
+ ![イメージ説明](83350031a6920698243cdfa4fa4ee6f2.png)
57
+ ![イメージ説明](c3108a93a078c21e5733a4eea460b28b.png)
29
58
  ### 解決したい事
30
- 恐ら文法的な間違いない思うのですが、エラーコードから察するに「os.path.splitext(df1)」の部分で
59
+ 関数(これ自体がしっかりと動ものかして)からはエラーコードが吐き出されない
31
- df1から上手くファイルの拡張子受け取れていような感じするのですが、解決策が分かりせん
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

もう一度コードを実装したらなぜかエラーコードが出なくなったので書き直しました。

2019/06/17 13:25

投稿

Danrussia
Danrussia

スコア44

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
- 422 compression = _infer_compression(filepath_or_buffer, compression)
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