質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.37%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

0回答

1554閲覧

pythonでcsvファイルを読み込むがEXCELファイルに変換したときにカンマ区切りにならない

macmac

総合スコア25

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2021/06/15 14:22

pythonでcsvファイルを読み込むがEXCELファイルに変換したときにカンマ区切りになりません。
csvファイルに3列のデータがある(セルで表すとA1:C15)のですがEXCELファイルに変換すると
EXCELファイルのA1にcsvファイルのA1とA2とA3がそのまま反映されてセルごとに反映されません。

以下にコードを示します。ご教示をお願いします。
import pandas as pd
df = pd.read_csv("7.csv",encoding="utf-16")
print(df)
df.to_excel("7.xlsx")

別件の追記で申し訳ないのですがこのディレクトリには7.csvのほかにも連番のcsvファイルが複数存在し一度に読み込みを読み込ませたいです。
そうした場合にこのデータが入っているディクトリをカレントディレクトリにして読み込むコードをご教示をお願いしたいです。こちらの方は丸投げになっていしまうので申し訳ありません。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

TakaiY

2021/06/15 15:04

そのcsvファイルは本当にUTF-16のファイルですか? print(df)の出力はどのようになっていますか?
macmac

2021/06/15 15:21

実行結果を下記に示します。 C:\Users\nao\AppData\Local\Programs\Python\Python35\python.exe C:/Users/nao/Desktop/pppp/データ変換.py 1001\t1515\t16550 0 1002\t1516\t16552 1 1003\t1517\t16554 2 1004\t1518\t16556 3 1005\t1519\t16558 4 1006\t1520\t16560 5 1007\t1521\t16562 6 1008\t1522\t16564 7 1009\t1523\t16566 8 1010\t1524\t16568 9 1011\t1525\t16570 10 1012\t1526\t16572 11 1013\t1527\t16574 12 1014\t1528\t16576 13 1015\t1529\t16578
TakaiY

2021/06/15 15:26

回答ほここではなく、質問を編集して追加してください。他の見に来た人にもわかりやすいように。 たぶん、そのCSVファイルは、UTF-16のデータではありません。 UTF-16を指定しているのはなぜですか? 数値だけであれば、たぶん何も指定しなくてもいいと思うので、encoding="utf-16" の指定を無くして実行してみるとどうなりますか?
macmac

2021/06/15 15:33

指定しないとエラーが出てしまします。 指定をなくしたものを下記に示します。 C:\Users\nao\AppData\Local\Programs\Python\Python35\python.exe C:/Users/nao/Desktop/pppp/データ変換.py Traceback (most recent call last): File "C:/Users/nao/Desktop/pppp/データ変換.py", line 2, in <module> df = pd.read_csv("7.csv")#,encoding="utf-16") File "C:\Users\nao\AppData\Roaming\Python\Python35\site-packages\pandas\io\parsers.py", line 678, in parser_f return _read(filepath_or_buffer, kwds) File "C:\Users\nao\AppData\Roaming\Python\Python35\site-packages\pandas\io\parsers.py", line 440, in _read parser = TextFileReader(filepath_or_buffer, **kwds) File "C:\Users\nao\AppData\Roaming\Python\Python35\site-packages\pandas\io\parsers.py", line 787, in __init__ self._make_engine(self.engine) File "C:\Users\nao\AppData\Roaming\Python\Python35\site-packages\pandas\io\parsers.py", line 1014, in _make_engine self._engine = CParserWrapper(self.f, **self.options) File "C:\Users\nao\AppData\Roaming\Python\Python35\site-packages\pandas\io\parsers.py", line 1708, in __init__ self._reader = parsers.TextReader(src, **kwds) File "pandas\_libs\parsers.pyx", line 539, in pandas._libs.parsers.TextReader.__cinit__ File "pandas\_libs\parsers.pyx", line 767, in pandas._libs.parsers.TextReader._get_header UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff in position 0: invalid start byte
TakaiY

2021/06/15 15:41

UTF-8だとして読もうとしても読めないようですね。 もしかして、そのCSVはExcelで作ったUTF-8 のCSVですか? だとすると、BOM付きUTF-8になっていると思うので、encoding="utf_8_sig" を指定するといいかもしれません。 いずれにしても、そのCSVファイルのencodeを調べて、それに合ったencodingを指定してください。 最近のエディタで開けばわかるはずです。
cwi

2021/06/16 06:44

(1)Wikipediaのバイト順マークのページによるとBOMで先頭が0xFFになるのはUTF-16かUTF-32ということです。データは読めていますしUTF-16指定でいいのではないでしょうか。 (2)[pandasでcsv/tsvファイル読み込み(read_csv, read_table)](https://note.nkmk.me/python-pandas-read-csv-tsv/) によるとread_csvのデフォルトの区切り文字はカンマだそうです。貼られた実行結果からそのcsvファイルの区切り文字はタブであることがわかります。区切り文字を指定するかread_tableのほうを使うかすればよさそうです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.37%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問