【pandas】多个sheet的读取和导出

批量处理Excel多页签
本文介绍了一种使用Python批量处理Excel中多个Sheet的方法。通过pandas库读取指定文件的所有Sheet,并对数据进行类型转换及列名更改。接着利用映射关系填充额外字段,并最终将处理后的数据导出到新的Excel文件。

第一次碰到多个sheet的批量处理,记录一下读取和导出

import numpy as np 
import pandas as pd
# 读取同一个文件中多个sheet
df = pd.read_excel('2020年往来明细.xlsx',sheet_name=None)
df['供应商清单']['code'] = df['供应商清单']['code'].astype('float')
df_m = df['供应商清单'][['code','vendor']]
df_m.rename(columns={'code':'科目'},inplace=True)
dict_ = df_m.set_index('科目').to_dict()
for i in df.keys():
    try:
        df[i]['供应商名称'] = df[i]['科目'].map(dict_['vendor'])
    except:
        print(i)
# 将多个sheet保存至同一个excel中
writer = pd.ExcelWriter('done_.xlsx')
for i in df.keys():
    df[i].to_excel(writer,sheet_name = i)
writer.save()

<think> 我们被要求回答关于pandas读取文件导出文件的方法。根据提供的引用,我们可以总结如下: 读取文件: - 读取CSV文件:使用`pd.read_csv()`函数 - 读取Excel文件:使用`pd.read_excel()`函数,可以通过`sheet_name`参数指定具体的工作表 - 读取JSON文件:使用`pd.read_json()`函数 - 读取HTML表格:使用`pd.read_html()`函数 - 读取剪贴板内容:使用`pd.read_clipboard()`函数 - 读取SQL数据:使用`pd.read_sql()`函数,需要先建立数据库连接 - 读取XML文件:使用`pd.read_xml()`函数(在引用[1]中提及) 导出文件: - 导出为CSV文件:使用`df.to_csv()`函数 - 导出Excel文件:使用`df.to_excel()`函数 - 导出为JSON文件:使用`df.to_json()`函数 - 导出为HTML文件:使用`df.to_html()`函数 - 导出到剪贴板:使用`df.to_clipboard()`函数 - 导出到SQL数据库:使用`df.to_sql()`函数 - 导出为Markdown格式:使用`df.to_markdown()`函数(在引用[1]中提及) 另外,引用中还提到了一些细节,如: - 文件路径可以使用原始字符串(在字符串前加r)以避免转义问题,或者将反斜杠替换为正斜杠。 - 可以指定编码方式(如`encoding='utf8'`)以避免编码错误。 - 可以指定是否保留行索引(使用`index`参数,默认为True,即保留;导出时若不想保留行索引,可以设置`index=False`)。 - 可以指定列索引(即列名)等。 下面将按照要求,使用中文给出清晰的结构化回答,并在适当位置添加引用标识。 </think> ### Pandas读取导出文件方法总结 Pandas提供了多种文件读写方法,以下是核心函数及用法: #### **一、数据读取方法** 1. **CSV文件** ```python import pandas as pd df = pd.read_csv('文件路径.csv', encoding='utf8', sep=',') # [^3] ``` - `encoding`:指定编码(常用utf8/gbk) - `sep`:分隔符(默认为逗号) - 路径处理:推荐使用原始字符串`r"C:\data.csv"`或正斜杠`"C:/data.csv"` 2. **Excel文件** ```python df = pd.read_excel('文件.xlsx', sheet_name='工作表名') # [^2][^4] ``` - `sheet_name`:指定工作表(支持名称或索引) 3. **JSON文件** ```python df = pd.read_json('data.json') ``` 4. **SQL数据库** ```python import pymysql conn = pymysql.connect(host, user, password, database) # 创建连接 df = pd.read_sql('SELECT * FROM table', con=conn) # [^4] ``` 5. **其他格式** - HTML表格:`pd.read_html(url)` - 剪贴板:`pd.read_clipboard()` - XML:`pd.read_xml('data.xml')` [^1] --- #### **二、数据导出方法** 1. **导出为CSV** ```python df.to_csv('output.csv', index=False, encoding='utf8') # [^2][^3] ``` - `index=False`:不保存行索引 2. **导出Excel** ```python df.to_excel('output.xlsx', sheet_name='结果', index=False) # [^2] ``` 3. **导出为JSON** ```python df.to_json('output.json') ``` 4. **导出到数据库** ```python df.to_sql('table_name', con=conn, if_exists='replace') # [^1] ``` 5. **其他格式** - HTML:`df.to_html('output.html')` - Markdown:`df.to_markdown('output.md')` [^1] --- #### **关键参数说明** - 编码问题:中文环境常用`encoding='gbk'`或`encoding='utf8'`[^3] - 路径处理:建议使用`r"路径"`避免转义错误 - 行列控制: - `index=False`:忽略行索引 - `columns=['列1','列2']`:选择导出列[^2] > 示例:读取含中文的CSV并导出Excel > ```python > df = pd.read_csv(r"数据.csv", encoding='gbk') > df.to_excel("结果.xlsx", sheet_name="处理结果", index=False) > ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值