Trying to run python pandas script for every sheet in document with sheet_name=None but not working(尝试为SHEET_NAME=NONE的文档中的每个工作表运行PYTHON PANAS脚本,但不起作用)
本文介绍了尝试为SHEET_NAME=NONE的文档中的每个工作表运行PYTHON PANAS脚本,但不起作用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
几天来,我一直在尝试解决sheet_name=None
的问题,但我尝试的所有东西都不起作用。我需要读取一个EXCEL文档,并对文档中的每个工作表运行此操作,并保留工作表的名称(我不知道工作表名称)。我试过这样的东西
dfs = pd.read_excel('products2.xlsx', sheet_name=None, index_col=[0])
for name, df in dfs.items():
但它只是帮助我避免了第一个错误,但它并不是对每一个工作表都运行,只对最后一个运行。
另外,我在网上找到了不同的解决方案,但没有将工作表分开,我需要保留工作表和工作表名称。
import pandas as pd
import numpy as np
import seaborn as sns
df = pd.read_excel('products2.xlsx', index_col=[0], sheet_name=None)
df.columns = df.columns.str.split('_', expand=True)
new_data = df.stack(0)
new_data1 = new_data.eval('status = profit - loss + other')
new_data2 = new_data1.eval('index = (profit / status) / (loss / status)')
output = new_data2.unstack(1).swaplevel(0,1, axis=1).sort_index(axis=1)
order = output.reindex(columns=['profit', 'loss', 'other', 'status', 'index'], level=1)
rounding = order.round(3)
cm = sns.light_palette("green", as_cmap=True)
cc = sns.light_palette("red", as_cmap=True)
pc = sns.color_palette("vlag", as_cmap=True)
styler = rounding.style # Keep Styler for reuse
green = styler.background_gradient(
cmap=cm,
subset=rounding.columns.get_loc_level('profit', level=1)[0]
)
red = green.background_gradient(
cmap=cc,
subset=rounding.columns.get_loc_level('loss', level=1)[0]
)
styler.to_excel('output_file.xlsx')
如果有人能帮我找到解决方案,这里是Dropbox link的EXCEL文档。
推荐答案
使用pd.ExcelWriter
创建新文件,使用to_excel
在不同的工作表上写入:
import pandas as pd
import seaborn as sns
dfs = pd.read_excel('products2.xlsx', sheet_name=None, index_col=[0])
with pd.ExcelWriter('output_file.xlsx') as writer: # <- HERE
for name, df in dfs.items():
print(name)
df.columns = df.columns.str.split('_', expand=True)
new_data = df.stack(0)
new_data1 = new_data.eval('status = profit - loss + other')
new_data2 = new_data1.eval('index = (profit / status) / (loss / status)')
output = new_data2.unstack(1).swaplevel(0,1, axis=1).sort_index(axis=1)
order = output.reindex(columns=['profit', 'loss', 'other', 'status', 'index'], level=1)
rounding = order.round(3)
cm = sns.light_palette("green", as_cmap=True)
cc = sns.light_palette("red", as_cmap=True)
pc = sns.color_palette("vlag", as_cmap=True)
styler = rounding.style # Keep Styler for reuse
green = styler.background_gradient(
cmap=cm,
subset=rounding.columns.get_loc_level('profit', level=1)[0]
)
red = green.background_gradient(
cmap=cc,
subset=rounding.columns.get_loc_level('loss', level=1)[0]
)
styler.to_excel(writer, sheet_name=name) # <- HERE
第一页:
第二页:
这篇关于尝试为SHEET_NAME=NONE的文档中的每个工作表运行PYTHON PANAS脚本,但不起作用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
沃梦达教程
本文标题为:尝试为SHEET_NAME=NONE的文档中的每个工作表运行PYTHON PANAS脚本,但不起作用
基础教程推荐
猜你喜欢
- 使用Python匹配Stata加权xtil命令的确定方法? 2022-01-01
- 哪些 Python 包提供独立的事件系统? 2022-01-01
- 症状类型错误:无法确定关系的真值 2022-01-01
- 如何在 Python 中检测文件是否为二进制(非文本)文 2022-01-01
- 将 YAML 文件转换为 python dict 2022-01-01
- 使 Python 脚本在 Windows 上运行而不指定“.py";延期 2022-01-01
- 使用 Google App Engine (Python) 将文件上传到 Google Cloud Storage 2022-01-01
- 如何在Python中绘制多元函数? 2022-01-01
- Python 的 List 是如何实现的? 2022-01-01
- 合并具有多索引的两个数据帧 2022-01-01