問題:pandas.DataFrame の to_excel で index が出力される
pandas.DataFrame で、Excelファイルを生成するメソッド、to_excel() を実行したときに、意図はしていなかったのですがDataFrame の index(行のアクセサ)がデフォルトで出力されるようでした。
from pandas import DataFrame
def generateExcelFrom(dataFrame:DataFrame, filepath:str)->None:
dataFrame.to_excel(filepath)
return
dataFrame = new DataFrame([
['a','b','c','d','e'],
['f','ggg','hhhh','ii','jjjjjjjj'],
])
generateExcelFrom(dataFrame, './sample.xlsx')
配列データ自体は5列ですが、DataFrame が header(列のアクセサ) と index(行のアクセサ)を両方保持しており、A列にindex列を描画するようでした。
データを意図した形で出力したわけではないため、index列を出力しない方法を探したところ、公式ドキュメントに対応方法が書いてありました。
https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.to_excel.html
解決法: index=False を to_excel の引数として渡す。
参照
https://stackoverflow.com/questions/22089317/python-to-excel-without-row-names-index
from pandas import DataFrame
def generateExcelFrom(dataFrame:DataFrame, filepath:str)->None:
dataFrame.to_excel(
filepath,
index=False
)
return
dataFrame = DataFrame([
['a','b','c','d','e'],
['f','ggg','hhhh','ii','jjjjjjjj'],
])
generateExcelFrom(dataFrame, './sample.xlsx')
index列が消え、配列の出力ができました。
追記:Header を出力しない場合は header=False を設定する
from pandas import DataFrame
def generateExcelFrom(dataFrame:DataFrame, filepath:str)->None:
dataFrame.to_excel(
filepath,
index=False,
header=False
)
return
dataFrame = DataFrame([
['a','b','c','d','e'],
['f','ggg','hhhh','ii','jjjjjjjj'],
])
generateExcelFrom(dataFrame, './sample.xlsx')
このように、DataFrame の to_excel() メソッドを使う際に、index と header を制御したい場合は、parameter に、 index=False
及び header=False
を付け加えることで出力を制御できるようでした。
前提条件
python --version
Python 3.7.4
numpy==1.17.1
openpyxl==2.6.3
pandas==0.25.1
以上です。