85551


以下の記事を参考に作業しています。

[Excelシートをデータフレームとして読み込む](https://datumstudio.jp/blog/1722/#Excel)

[code]

    pd_xl = pd.ExcelFile(<略>)
    
    temp_df = pd_xl.parse(sheet_name=<略>, names=<略>)
    temp_df = temp_df.fillna('-')
    print('temp_df.name-->', temp_df.name)
    
[/code]

というのをやると

[code]

    AttributeError: 'DataFrame' object has no attribute 'name'
    
[/code]

というエラーが出るのですが、parseのnamesで指定した内容を読みだすには、どうしたらよいのでしょうか？

［環境］  
PyCharm 2021.3.1 (Community Edition)  
Python 3.8.5  
Windows 10 Home(21H2 64bit)


CC BY-SA 4.0
2022-01-07T12:11:33.447
85549
2022-01-22T05:12:00.197
2022-01-22T05:12:00.197
3060
43160
question
python pandas excel pycharm
Pandas でエクセルファイルを取り込んだデータフレームの name で AttributeError が発生する


[pandas.ExcelFile.parse](https://pandas.pydata.org/docs/reference/api/pandas.ExcelFile.parse.html)は[pandas.read_excel](https://pandas.pydata.org/docs/reference/api/pandas.read_excel.html)と同じです。

parseの説明はこうなっています。

> Parse specified sheet(s) into a DataFrame.  
>  Equivalent to read_excel(ExcelFile, …) See the read_excel docstring for
> more info on accepted parameters.

read_excelのnamesパラメータの説明はこちら。

> names : array-like, default None  
>  List of column names to use. ...以後省略

つまり列の名前なので、列名のインデックスオブジェクトとしては`.columns`、列名のリストとしては`.columns.values` とか
`.columns.tolist()` を `temp_df` に対して指定すれば良い訳です。  
[pandas.DataFrame.columns](https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.columns.html)

> The column labels of the DataFrame.

[pandas.Index.values](https://pandas.pydata.org/docs/reference/api/pandas.Index.values.html?highlight=values#pandas.Index.values)

> Return an array representing the data in the Index.

[pandas.Index.tolist](https://pandas.pydata.org/docs/reference/api/pandas.Index.tolist.html?highlight=tolist#pandas.Index.tolist)

> Return a list of the values.

参考：  
[pandasの使い方
〜列名や行名を取得する〜](https://mryksy.hatenablog.com/entry/2018/02/18/130343)  
[pandas.DataFrameの構造とその作成方法](https://note.nkmk.me/python-pandas-dataframe-
values-columns-index/)


CC BY-SA 4.0
2022-01-07T13:23:25.613
85551
2022-01-07T14:57:34.790
2022-01-07T14:57:34.790
26370
26370
85549
answer