■ はじめに
https://dk521123.hatenablog.com/entry/2020/11/18/000000
の続き。 AWS Glue で、Excel ファイルを開いて、 CSVに変換する必要が出てきたので、メモ。 なお、AWS Glue環境下でのExcel ファイルを扱うことに関しては 以下の関連記事を参照のこと。
AWS Glue ~ Excelを扱うには / PySpark (Glue2.0) 版 ~
https://dk521123.hatenablog.com/entry/2020/10/09/144520
■ Pandas でのCSVに変換
* to_csv() を使う。 => 以下、API仕様。
API仕様
https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.to_csv.html
主なオプション
# | Option Names | Explanations |
---|---|---|
1 | index=True/False | インデックスを書き出すか無視するか |
2 | header=True/False | ヘッダーを書き出すか無視するか |
3 | quoting=csv.QUOTE_ALL etc | 囲み文字の指定(csv.XXX で指定する場合「import csv」) |
4 | encoding=[Format] | エンコーディング(defaults ‘utf-8’) |
5 | sep=[Delimiter] | 区切り文字 |
■ サンプル
例1:Hello World!
import pandas as pd data_frame = pd.read_excel('sample.xlsx') data_frame.to_csv('output_sample.csv', index=False)
例2:to_csv の オプション
import csv import pandas as pd data_frame = pd.read_excel(r'C:\tmp\Book1.xlsx') data_frame.to_csv( 'output_sample.csv', index=False, header=True, sep=',', quoting=csv.QUOTE_ALL) # if (data_frame and len(data_frame) < 0): # => ValueError: The truth value of a DataFrame is ambiguous. # Use a.empty, a.bool(), a.item(), a.any() or a.all(). if (data_frame.empty): print('Zero') else: print('Count = {}'.format(len(data_frame))) print('See output_sample.csv')
コンソール出力結果
Count = 3 See output_sample.csv
C:\tmp\Book1.xlsx
id name note 1 mike hello 2 Tom hi, Tom"!! 3 Kevin world!
output_sample.csv
"id","name","note" "1","mike","hello" "2","Tom","hi, Tom""!!" "3","Kevin","world!"
■ トラブル「ValueError: The truth value of a DataFrame is ambiguous」について
以下のような書き方をすると、「例外内容」のようなエラーが発生する
例外が発生する条件の書き方
if (data_frame and len(data_frame) < 0):
例外内容
ValueError: The truth value of a DataFrame is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all(). * ambiguous = 曖昧 => DataFrame 全体を判定しているのか、 各要素で判定しているのか曖昧だから a.empty, a.bool(), a.item(), a.any() 又は a.all()を使いなさい ってエラー。
参考文献
https://note.nkmk.me/python-numpy-pandas-value-error-ambiguous/
参考文献
https://note.nkmk.me/python-pandas-to-csv/
関連記事
Pandas ~ 基本編 / Excel編 ~
https://dk521123.hatenablog.com/entry/2020/11/18/000000
Pandas ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2019/10/22/014957
Python で Excel を扱うには
https://dk521123.hatenablog.com/entry/2019/11/05/221010
Python ~ 基本編 / Excelを扱う・OpenPyXL ~
https://dk521123.hatenablog.com/entry/2020/08/27/000000
AWS Glue ~ Excelを扱うには / PySpark (Glue2.0) 版 ~
https://dk521123.hatenablog.com/entry/2020/10/09/144520
Python ~ 基本編 / 文字列 ~
https://dk521123.hatenablog.com/entry/2019/10/12/075251