重复项没标红:import pandas as pd import os # 获取当前目录下的所有Excel文件名 files = [f for f in os.listdir('.') if f.endswith('.xlsx')] # 读取所有Excel文件的所有sheet表 dfs = [] for file in files: sheets = pd.read_excel(file, sheet_name=None, header=1) for sheet_name, sheet_data in sheets.items(): dfs.append(sheet_data) # 合并所有DataFrame result = pd.concat(dfs, ignore_index=True, sort=False) # 判断指定列是否有重复值并标红 def highlight_dup(x): dup = x.duplicated(keep=False) return ['background-color: red' if v else '' for v in dup] result.style.applymap(highlight_dup, subset=['客户名称']) # 存储合并后的DataFrame为Excel文件 result.to_excel('merged.xlsx', index=False)
时间: 2024-02-12 17:03:50 浏览: 172
您的代码中,`applymap()`函数应该改为`apply()`函数,因为`apply()`函数可以对每一列进行操作,具体修改如下:
```python
import pandas as pd
import os
# 获取当前目录下的所有Excel文件名
files = [f for f in os.listdir('.') if f.endswith('.xlsx')]
# 读取所有Excel文件的所有sheet表
dfs = []
for file in files:
sheets = pd.read_excel(file, sheet_name=None, header=1)
for sheet_name, sheet_data in sheets.items():
dfs.append(sheet_data)
# 合并所有DataFrame
result = pd.concat(dfs, ignore_index=True, sort=False)
# 判断指定列是否有重复值并标红
def highlight_dup(s):
return ['background-color: red' if v else '' for v in s.duplicated(keep=False)]
result = result.style.apply(highlight_dup, subset=['客户名称'])
# 存储合并后的DataFrame为Excel文件
result.to_excel('merged.xlsx', index=False)
```
在`highlight_dup()`函数中,使用`apply()`函数对每一列进行操作,返回对应的样式列表。在最后,将样式应用到整个DataFrame上并存储为Excel文件。
阅读全文