LoginSignup
7
12

More than 3 years have passed since last update.

(Python)pandas.DataFrame の to_excel で index 列を出力しない方法

Last updated at Posted at 2019-08-29

問題:pandas.DataFrame の to_excel で index が出力される

pandas.DataFrame で、Excelファイルを生成するメソッド、to_excel() を実行したときに、意図はしていなかったのですがDataFrame の index(行のアクセサ)がデフォルトで出力されるようでした。

sample.py
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')

出力結果
excelDemo1.png

配列データ自体は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

sample.py
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')

出力結果
excelDemo2.png

index列が消え、配列の出力ができました。

追記:Header を出力しない場合は header=False を設定する

sample.py
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')

出力結果
excelDemo3.png

このように、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

以上です。

7
12
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
12