【发布时间】:2021-03-19 22:56:38
【问题描述】:
我正在尝试编写一个将两个 excel 文件合并在一起的脚本。一个已经过手工处理,并对其进行了一系列自定义格式化,另一个是自动生成的文件。在 pandas 中进行合并很简单,但事实证明保留格式很麻烦。我找到了 styleframe 库,它似乎应该简化我正在尝试做的事情,因为除了原始数据之外,它还可以导入样式信息。但是,我在实际实现代码时遇到了问题。
我的问题是:如何从 excel 中的每个单独的单元格中提取样式信息,然后将其应用于合并的数据框?请注意,数据在列或行之间的格式不一致,所以我认为我不能以这种方式应用样式。这是我的代码的相关部分:
#iterate thorough all cells of merged dataframe
for rownum, row in output_df.iterrows():
for column, value in row.iteritems():
filename = row['File Name']
cur_style = orig_excel.loc[orig_excel['File Name'] == filename, column][0].style #pulls the style of relevant cell in the original excel document
target_style = output_df.loc[output_df['File Name'] == filename, column][0].style #style of the cell in the merged dataframe
target_style = cur_style #set style in current output_df cell to match original excel file style
这段代码运行(缓慢),但它似乎并没有真正将任何样式应用于输出样式框架
查看文档,我并没有真正看到在单个样式框架容器级别应用样式的方法——一切都是为了将其作为行或列进行。似乎您还需要使用样式器对象来设置样式。
【问题讨论】:
-
this 有帮助吗?
-
是的,虽然它只处理了一半的问题——有没有办法通过读取给定单元格的 .style 来生成样式器对象?还是我必须根据 .style 的内容手动设置样式器对象中的所有参数?
-
如果您使用的是
StyleFrame.read_excel(..., read_style=True),那么每个.style属性已经是一个Styler对象 -
因为
bg_color确实是一个字符串,所以从你的第二个例子中删除它 -
我得到了代码工作。感谢您的帮助,尤其感谢您创建 Styleframe 库!
标签: python pandas styleframe