Python处理Excel之多列转多行

本文介绍了一种使用Python对Excel表格中的数据进行处理的方法,具体为将多列数据转换为多行格式,适用于需要将表格数据重新组织的情况。通过详细步骤和代码示例,展示了如何实现这一转换过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前几天,机缘巧合之下需要对一个拥有大量数据的excel表格进行处理。要求是将多列转成多行。由于数据是需要被保密的,所以举例说明即可。

例如:

姓名性别
张三 90 70
小红87  93

 

变为:

姓名性别开始结束
张三  
张三9070
小红87 
小红 93

即将"一","二"列合并为"开始"列,"三","四"列合并为"结束"列。

步骤:①按行取出Excel内所有数据。 

           ②"一""二"变为一列,"三""四"变为一列。并取到"姓名""性别"两列。

           ③"姓名"列必须从['张三','小红']变为['张三','张三','小红','小红']

                      "性别"列也同样。

                  ④创建一个表头列表listh,将以上得到的list00,list11,liststart,listend这四个列表存入一个大列表dataz中,每个列表代                          表一列。

                  ⑤将dataz与listh存入Excel中。

全部代码如下:

"""
功能:多列转多行
作者:橙稚
"""
import pandas  as pd
import openpyxl
import numpy as np

def data_write(listh, dataz):
    file1 = openpyxl.Workbook()
    outws = file1.create_sheet(index=0)  # 创建sheet
    outws.append(listh)

    for f in range(len(dataz[0])):
        outws.append(dataz[:, f].tolist())
    file1.save("text-1.xlsx")

if __name__ == '__main__':

    df = pd.read_excel('test.xlsx',dtype=object,keep_default_na=False)
    data2 = df.values.tolist()


    list0=[]
    list1=[]

    liststart=[]
    listend=[]

    for i in range(0,len(data2)):
        for j in range(2,4):
            liststart.append(data2[i][j])
        for k in range(4,6):
            listend.append(data2[i][k])
        list0.append(data2[i][0])
        list1.append(data2[i][1])

    list00=[]
    list11=[]

    for i in list0:
        for j in range(0,2):
            list00.append(i)
    for i in list1:
        for j in range(0,2):
            list11.append(i)
    dataz = [list00,list11,liststart,listend]

    listh=['姓名','性别','开始','结束']
    dataz=np.array(dataz)
    data_write(listh,dataz)

Tips:

①Excel表格中有空白单元格,记得取数据的时候加上keep_default_na=False,不然在存数据的时候空单元格会变成#NAN!

② 在用Python取Excel中int数据的时候,记得要加dtype=object,不然的话取数据的时候自动将int型数据变为float型数据。如3变为3.0。

③每一次运行前一定要确保test-1.xlsx这个Excel表格不存在,存在的话就手动删掉吧。不然可能会报错的。

④根据不同的需求需要更改的地方都用红框圈下来啦。主要集中在二三四步骤内。

最后:

欢迎关注公众号寻船人,后台回复列转行获取代码及小例子。更多简便小工具小方法橙子都会在公众号分享。一起来寻找更简便的方法吧。

<think>嗯,用户想用Python的pandas库读取Excel文件中多列多行的数据,并换为表存储。首先,我需要回忆一下pandas的read_excel函数的使用方法。记得io参数是文件路径,sheet_name指定工作表,header确定标题行,usecols可以选择特定的。用户需要多列,所以usecols应该是一个表,比如['A', 'B', 'C']或者索引。 然后,读取后的DataFrame如何换为表?可能需要逐行处理,将每一行的值换为表,再汇总成一个大的表。比如使用values.tolist()方法,但这样可能得到一个二维表,每行是一个子表。用户可能需要这样的结构,或者希望将多列数据合并成一个一维表?需要明确用户的需求,但根据问题描述,应该是保留每行的多列数据,所以二维表更合适。 另外,要注意是否需要包含名。如果header=0,默认第一行是名,读取数据时会跳过,所以生成的表不会包含名。如果用户的数据没有标题行,可能需要设置header=None,避免第一行数据被当作名。 举个例子,比如Excel有A、B、C三,需要读取所有行的这三换为表。代码可能是: df = pd.read_excel('file.xlsx', usecols=['A','B','C']) data_list = df.values.tolist() 这样data_list就是包含所有行的表,每个元素是该行的三个值组成的子表。 还需要考虑异常处理,比如文件不存在或者名错误的情况,但用户可能暂时不需要这些高级部分,先给出基本实现方法。另外,如果用户需要指定工作表,可能需要调整sheet_name参数,比如sheet_name=0或者名称。 总结步骤:导入pandas,使用read_excel读取指定,然后用tolist()换。注意usecols的正确使用方式,可以是字母、名或索引。最后检查生成的表结构是否符合预期。</think>要使用Python的pandas库读取Excel文件中多列多行数据并换为表,可以按照以下步骤操作: ### 操作步骤 1. **导入pandas库** ```python import pandas as pd ``` 2. **读取Excel文件** ```python # 读取指定(按名或字母) df = pd.read_excel( io="文件路径.xlsx", # 文件路径 sheet_name=0, # 工作表序号或名称 usecols=['名1', '名2', '名3'] # 或用字母['A','B','C'] ) # 读取连续范围(如B到E) df = pd.read_excel("文件路径.xlsx", usecols="B:E") ``` 3. **换为嵌套表** ```python data_list = df.values.tolist() ``` ### 完整示例 ```python import pandas as pd # 读取A、C、E三数据(跳过标题行) df = pd.read_excel("data.xlsx", usecols=['A','C','E']) # 换为二维表[[行1数据],[行2数据]...] result = df.values.tolist() print(result) ``` 输出示例: ```python [[1, '苹果', 5.6], [2, '香蕉', 3.2], [3, '橙子', 4.8]] ``` ### 关键参数说明 - `usecols`支持三种格式: 1. 字母表:`['A','C','D']` 2. 表:`['姓名','年龄']` 3. 索引范围:`"B:F"` - `header=0`表示默认使用第一行作为名[^1] - 数据换时`df.values`返回numpy数组,`tolist()`将其Python
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值