Python新手求助:如何从Pandas DataFrame生成对应Invoice No.的分组Excel文件
从Pandas DataFrame生成指定Excel文件的解决方案
核心思路
先按Voucher ID分组,记录每个凭证对应的所有发票行;再遍历每个Invoice No.,找到其所属的凭证组,将该组的所有行导出为以发票号命名的Excel文件。
示例代码
import pandas as pd # 构造示例DataFrame data = { 'Invoice No.': ['MHI000000038710', 'MHI000000038711', 'MHI000000038712'], 'Voucher ID': [100039, 100043, 100043] } df = pd.DataFrame(data) # 按Voucher ID分组,保存每个凭证对应的所有行 voucher_groups = df.groupby('Voucher ID') # 创建字典,映射每个Invoice No.到对应的Voucher ID invoice_to_voucher = df.set_index('Invoice No.')['Voucher ID'].to_dict() # 遍历每个Invoice No.,生成对应Excel文件 for invoice_num, voucher_id in invoice_to_voucher.items(): # 获取当前凭证对应的所有行 group_df = voucher_groups.get_group(voucher_id) # 保存为Excel文件,文件名用发票号 group_df.to_excel(f'{invoice_num}.xlsx', index=False)
代码说明
groupby('Voucher ID'):把DataFrame按凭证ID分组,方便快速获取同一凭证下的所有发票行。invoice_to_voucher:建立发票号到凭证ID的映射,遍历每个发票号时能直接找到对应的凭证组。to_excel(f'{invoice_num}.xlsx', index=False):将对应凭证组的DataFrame导出为Excel文件,index=False表示不保存行索引,让输出表格更简洁。
内容的提问来源于stack exchange,提问作者Rohit Pandey
相关产品推荐
相关产品推荐

