数据处理-pandas之多sheet专题

pandas读取具有多个sheet的xlsx文件

import pandas as pd

df1 = pd.read_excel(data_path, sheet_name=None)
df2 = pd.read_excel(data_path)
print(df1.keys())
print(df2.keys())

两个print不一样,如果不设定sheet_name为None,默认指读取一个sheet,即df2的keys为表格的列名,df1的keys返回的为所有sheet的name,df1读取了所有sheet,为字典类型

pandas保存多个sheet在一个xlsx中

在上述代码的基础上

df1_new = df1['sheet-1'].iloc[0:2]
df1_new.to_excel(data_path, sheet_name='sheet-1-new', index=False)  # sheet-1-new 是新的sheet名字,无重复

这种保存方式会改变原始的xlsx,打开文件后只有一个标签名为sheet-1-new的表格,其他的都没有了。即使使用for循环,只会覆盖,最终还是只有一个sheet。

import pandas as pd
df1 = pd.read_excel(data_path, sheet_name=None)
df1_new = df1['sheet-1'].iloc[0:2]
key_list = df1.keys()

writer = pd.ExcelWriter(data_path)
for key in key_list:
    df1[key].to_excel(writer, sheet_name=key, index=False)
df1_new.to_excel(writer, sheet_name='sheet-1-new', index=False)
writer.close()

使用ExcelWriter+for循环在一个xlsx中保存多个sheet

pandas在已存在的xlsx中添加一个新的sheet

使用with…as的形式打开,推出后自动close文件。ExcelWriter使用’a’的mode进行追加sheet,注意要设置engine。

with pd.ExcelWriter(data_path, mode='a', engine='openpyxl') as writer:
    new_dataf.to_excel(writer, sheet_name='new-sheet', index=False)

在已经存在xlsx中重写sheet

这个需要联动openpyxl第三方库。在尝试用遇到了好多报错,哭死。下面这个方法是可以通过的。

data = {'Name': ['Alice', 'Bob', 'Charlie'], 'Age': [25, 30, 35]}
data = pd.DataFrame(data)
with pd.ExcelWriter(data_path, engine='openpyxl', mode='a', if_sheet_exists='replace') as writer:
    # writer.book = load_workbook('/home/wqgao/temp/dataf/total_ori.xlsx')
    data.to_excel(writer, sheet_name='exist_sheet', index=False)

之前看了大部分博客没有说要设置if_sheet_exists参数,在某一篇(https://blog.csdn.net/weixin_51591389/article/details/129795842)中提到了,不过参数设置的是’overlay’,我的出现报错,可能是版本问题。更改为replace即可,该参数如果设置为’new’,则会重新创建一个sheet,命名为sheet_name+‘1’。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值