python 数据分别写入到同一个Excel文件的不同Sheet中

在Python中,可以使用 pandas 库来处理数据框(DataFrame),以及使用 openpyxlxlsxwriter 等库将数据导出到Excel文件中。下面是一个示例代码,演示如何将DataFrame的数据导出到Excel表格中的不同子表,确保后面的导出结果不覆盖前面的导出结果:

首先,确保你已经安装了 pandasopenpyxl(或其他你喜欢的Excel写入库):

pip install pandas openpyxl

然后,可以使用以下示例代码:

import pandas as pd

# 假设你有多个DataFrame,这里用两个DataFrame作为示例
data1 = {'Name': ['Alice', 'Bob', 'Charlie'],
         'Age': [25, 30, 35]}
df1 = pd.DataFrame(data1)

data2 = {'City': ['New York', 'San Francisco', 'Los Angeles'],
         'Population': [8_398_748, 883_305, 3_979_576]}
df2 = pd.DataFrame(data2)

# 创建一个Excel写入对象
with pd.ExcelWriter('output.xlsx', engine='openpyxl', mode='a') as writer:
    # 将第一个DataFrame写入到Excel中的Sheet1
    df1.to_excel(writer, sheet_name='Sheet1', index=False)

    # 将第二个DataFrame写入到Excel中的Sheet2,避免覆盖之前的结果
    df2.to_excel(writer, sheet_name='Sheet2', index=False)

这个例子中,pd.ExcelWriter 用于创建一个Excel写入对象,mode='a' 表示以追加模式打开文件,这样就可以确保后续的写入操作不会覆盖之前的结果。 to_excel 方法用于将DataFrame写入指定的Sheet中。

这样,就可以将多个DataFrame的数据分别写入到同一个Excel文件的不同Sheet中,而不会覆盖之前的结果。

import pandas as pd

# 读取已有的Excel文件
try:
    with pd.ExcelWriter('output.xlsx', engine='openpyxl', mode='a') as writer:
        # 读取已有的子表数据
        existing_data = pd.read_excel('output.xlsx', sheet_name=None)

        # 假设已有名为 'Sheet1' 和 'Sheet2' 的子表
        sheet1_name = 'Sheet1'
        sheet2_name = 'Sheet2'

        # 判断子表是否已存在,如果存在则追加数据,否则创建新子表并写入数据
        if sheet1_name in existing_data:
            df1 = pd.DataFrame({'Name': ['David', 'Eva', 'Frank'],
                                'Age': [28, 32, 40]})
            df1.to_excel(writer, sheet_name=sheet1_name, index=False, header=None, startrow=existing_data[sheet1_name].shape[0]+1)
        else:
            df1.to_excel(writer, sheet_name=sheet1_name, index=False)

        if sheet2_name in existing_data:
            df2 = pd.DataFrame({'City': ['Chicago', 'Miami', 'Dallas'],
                                'Population': [2_693_976, 490_014, 1_343_573]})
            df2.to_excel(writer, sheet_name=sheet2_name, index=False, header=None, startrow=existing_data[sheet2_name].shape[0]+1)
        else:
            df2.to_excel(writer, sheet_name=sheet2_name, index=False)

except FileNotFoundError:
    # 如果文件不存在,直接创建文件并写入数据
    with pd.ExcelWriter('output.xlsx', engine='openpyxl') as writer:
        df1 = pd.DataFrame({'Name': ['David', 'Eva', 'Frank'],
                            'Age': [28, 32, 40]})
        df1.to_excel(writer, sheet_name='Sheet1', index=False)

        df2 = pd.DataFrame({'City': ['Chicago', 'Miami', 'Dallas'],
                            'Population': [2_693_976, 490_014, 1_343_573]})
        df2.to_excel(writer, sheet_name='Sheet2', index=False)

  • 12
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值