前提・実現したいこと
pythonのエクセルについて質問です。 あるエクセルシートが存在してそれをサンプル.xlsxとします。 サンプル.xlsxの中には A列 B列 C列 日付 会社名 売上 2020/8/20 A社 400 2020/8/21 B社 2000 2020/8/20 C社 100 2020/8/28 B社 500 ・ ・ ・ ・ ・ ・ ・ ・ ・ A・B・C列それぞれにはランダムに複数社の売上データが入っているとします。 行いたいことは新しいファイルを作成し B列にある会社の種類だけシートをその会社名で作成。 それぞれのシートに対応する会社名に対応するクロス集計表を作成したいのですが どの様なプログラムになりますか? コードは手探りで書いているのですが全然違う気もしてきてまして・・・
発生している問題・エラーメッセージ
FileNotFoundError Traceback (most recent call last) <ipython-input-80-547f5f2e3ff5> in <module> 14 for i in suppliers: 15 df["i"] = pd.DataFrame(dataList,columns=columns) ---> 16 with pd.ExcelWriter("新サンプル.xlsx",data_format='YYYY/MM/DD',datatime_format='YYYY/MM/DD',engine="openpyxl",mode='a')as writer: 17 df["i"].to_excel(writer,sheet_name="i",index=False) ~\anaconda3\lib\site-packages\pandas\io\excel\_openpyxl.py in __init__(self, path, engine, mode, **engine_kwargs) 23 from openpyxl import load_workbook 24 ---> 25 book = load_workbook(self.path) 26 self.book = book 27 else: ~\anaconda3\lib\site-packages\openpyxl\reader\excel.py in load_workbook(filename, read_only, keep_vba, data_only, keep_links) 311 """ 312 reader = ExcelReader(filename, read_only, keep_vba, --> 313 data_only, keep_links) 314 reader.read() 315 return reader.wb ~\anaconda3\lib\site-packages\openpyxl\reader\excel.py in __init__(self, fn, read_only, keep_vba, data_only, keep_links) 122 def __init__(self, fn, read_only=False, keep_vba=KEEP_VBA, 123 data_only=False, keep_links=True): --> 124 self.archive = _validate_archive(fn) 125 self.valid_files = self.archive.namelist() 126 self.read_only = read_only ~\anaconda3\lib\site-packages\openpyxl\reader\excel.py in _validate_archive(filename) 94 raise InvalidFileException(msg) 95 ---> 96 archive = ZipFile(filename, 'r') 97 return archive 98 ~\anaconda3\lib\zipfile.py in __init__(self, file, mode, compression, allowZip64, compresslevel) 1238 while True: 1239 try: -> 1240 self.fp = io.open(file, filemode) 1241 except OSError: 1242 if filemode in modeDict: FileNotFoundError: [Errno 2] No such file or directory: '"新サンプル".xlsx'
python
1import pandas as pd 2import os 3df = pd.read_excel("サンプル.xlsx",sheet_name="Sheet1") 4dateList = [] 5suppliers = [] 6columns = list(df.columns) 7sheetsList=list(df.keys()) 8for index , rows in df.iterrows(): 9 for row in rows: 10 work.append(row) 11 cell_value = df.iloc[:,1] 12 if cell_value in suppliers: 13 suppliers.append(cell_value) 14for i in suppliers: 15 df["i"] = pd.DataFrame(dataList,columns=columns) 16with pd.ExcelWriter("新サンプル.xlsx",data_format='YYYY/MM/DD',datatime_format='YYYY/MM/DD',engine="openpyxl",mode='a')as writer: 17 df["i"].to_excel(writer,sheet_name="i",index=False)
試したこと
補足情報(FW/ツールのバージョンなど)
python3.
anacondaを使用しております。
python自体はドがつく素人でVBAをちょっとかじっているレベルです。
pandasとopenpyxlの使い分けは分析 = pandas エクセル操作 = openpyxl の様なイメージで良いのでしょうか?
回答1件
あなたの回答
tips
プレビュー