如何让Pandas DataFrame打印时索引不重复并导出为Excel文件
实现Pandas索引去重显示并导出Excel的方法
嘿,我刚好碰到过类似的需求,咱们一步步来解决:
一、控制台打印时隐藏重复索引
Pandas默认会把每一行的索引都显示出来,所以咱们需要用Styler工具来隐藏重复的索引值。直接上代码:
import pandas as pd # 构造原始数据 li = [ {"employee_id":1,"project_handled": "pas"}, {"employee_id":1,"project_handled": "asap"}, {"employee_id":2,"project_handled": "trimm"}, {"employee_id":2,"project_handled": "fat"} ] df = pd.DataFrame(li) df.set_index("employee_id", inplace=True) # 关键:标记重复索引并隐藏 styled_df = df.style.hide(axis='index', subset=df.index.duplicated()) # 打印格式化后的表格 print(styled_df.to_string())
这段代码的逻辑很简单:df.index.duplicated()会生成一个布尔数组,标记哪些行的索引是重复的;然后hide()方法会把这些重复的索引单元格内容隐藏,打印出来就是你想要的效果:
project_handledemployee_id
1 pas
asap
2 trimm
fat
二、导出Excel并保持该格式
直接导出原始DataFrame的话,Excel里还是会显示重复索引,所以咱们用刚才的styled_df来导出,需要依赖openpyxl引擎(提前用pip install openpyxl安装):
# 导出到Excel文件 styled_df.to_excel('employee_projects.xlsx', engine='openpyxl', index=True)
导出后的Excel文件里,重复的employee_id索引会被隐藏,和控制台显示的格式完全一致。如果想让表格更美观,还可以加个对齐样式:
# 可选:设置单元格左对齐,让内容更整齐 styled_df = styled_df.set_properties(**{'text-align': 'left'})
内容的提问来源于stack exchange,提问作者claudius
相关产品推荐
相关产品推荐

