利用pandas处理Excel,将宽表打成窄表

有个需求需要处理Excel表格,将宽表的形式变成窄表,也就是行转列,如果是二位表格,直接利用pandas.melt() 函数进行处理就可以。
但是如果表格比较复杂,可能会有合并单元格,有相同列名的情况,需要通过一些其他的处理来完成,自己写了个代码可以应对这些情况:

import pandas as pd
from pathlib import Path

# 解决控制台输出显示补全
pd.set_option('display.max_rows', 50000)
pd.set_option('display.max_columns', 10000)
pd.set_option('display.width', 100000)

# 创建空表,输出路径
writer = pd.ExcelWriter('输出路径')
# 读取excel
# skip:指定跳过的行数; skiprows:跳过前面几行,包括表头; dtype:防止padans将整数数据读为浮点数
data=pd.read_excel('输入路径', header=2, dtype=str)
#data=data.fillna(method="ffill")        #列合并单元格补全
data=data.iloc[:,1:] #读取指定行指定列
# 替换由于合并单元格产生的空值表头
data.rename(columns={'Unnamed: 1':'xxx'}, inplace=True)    #解决行合并单元格产生的Unnamed问题

# 宽表展窄表
#参数说明: id_vars:保持不变的列索引
#         var_name:行索引转列索引后新的列名
#         value_name:value_name:新索引对应的值的列名
data=data.melt(id_vars='content_tag_value',var_name='user_tag_value',value_name='weight')

# 根据一列生成新的一列
# 需要利用pandas读取相同列名时自动添加的.1区分相同的列,后面再除去.1
data['   '] = data['   '].apply(lambda x: 'x' if x=='x1'or x=='x2' or x=='x3'
                else 'y' if x == 'y1' or x == 'y2'
                else 'z')

# 替换pandas自动为相同列添加的.1
data=data.replace({'xxx.1':'xxx','yyy.1':'yyy', , , })
data=data.replace({'xxx.2':'xxx','yyy.2':'yyy', , , })

# 交换列的顺序
order = ['col1', 'col2', 'col3', , ]
data = data[order]
# 保存到excel
data.to_excel(writer, index=None)
# 关闭,会调用.save()方法将数据保存
writer.close()
#diff = data1.compare(data2, align_axis=0)
# 打印值
print("转换后的值:\n{0}\n".format(data))

基本上可以满足复杂表格的行转列情况,对于函数要查阅资料,灵活应用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: Python利用Pandas可以很方便地处理Excel文件。Pandas是一个强大的数据分析库,可以读取Excel文件并将其转换为数据框,然后可以对数据进行各种操作,如筛选、排序、聚合等。Pandas还可以将数据框转换为Excel文件,方便数据的导出和共享。使用Pandas处理Excel文件可以大大提高数据处理的效率和准确性。 ### 回答2: Python是一种功能强大的编程语言,在数据处理方面拥有广泛的应用。在数据处理中,常常需要对Excel表格数据进行清晰整理、分析、统计和可视化,这时候Pandas就成为了一个非常有用的python库。Pandas库是一个开源的数据分析库,常被作为处理高性能数据的工具之一。该库建立在NumPy上,可以轻松地处理Excel表格。在Pandas库中,DataFrame是最重要的数据类型。它类似于Excel工作表,可以读取Excel文件、处理数据、更改格式、进行数据分析等等。 Python利用Pandas处理Excel的具体步骤如下: 1.导入Pandas库 首先需要在Python中导入pandas库,使用import语句,比如:import pandas as pd。 2.读取Excel文件 使用Pandas读取Excel文件有很多方式,最简单的是使用read_excel()方法。比如读取test.xlsx文件并将其存储在名为df的DataFrame中,可以使用以下代码: df = pd.read_excel('test.xlsx') 3.处理Excel数据 一旦将Excel数据存储在DataFrame中,就可以开始对其进行处理,包括: (1)数据清洗:删除重复数据、缺失值处理、数据类型转换等; (2)数据分组:对数据进行分组和汇总; (3)数据筛选:根据指定的条件对数据进行筛选; (4)数据可视化:使用Matplotlib等库对Excel数据进行绘图等; (5)数据导出:将处理后的数据保存为Excel文件、CSV文件等。 下面的是一个简单的示例代码,演示了利用Pandas库从Excel文件中读取数据、做简单的数据处理和最后将处理后的数据保存到新的Excel文件中: # 导入pandas库 import pandas as pd # 读取Excel文件 df = pd.read_excel('test.xlsx') # 只保留“name”和“score”列,并将score列10分制换算为百分制 df = df[['name', 'score']].apply(lambda x: x*10 if x.name == 'score' else x) df['score'] = df['score'].apply(lambda x: str(x)+'%') # 将处理后的数据存储为新的Excel文件 df.to_excel('output.xlsx', index=False) 总之,使用Pandas库可以很好地处理Excel表格数据,并实现数据的清晰整理、分析和可视化,帮助用户更好地了解和掌握数据,挖掘其中的价值。 ### 回答3: Python是一种流行的编程语言,它可以使用pandas处理ExcelPandasPython的一个数据操作库,使得用户可以使用Python轻松地读取、处理和写入Excel文件。 Pandas库提供了两个主要的数据结构,即Series和DataFrame。Series是一维的数据结构,类似于Python中的列表或数组。而DataFrame是二维的数据结构,可以看作是由多个Series组成的表格。 在Python中使用Pandas处理Excel文件非常方便。首先需要安装pandas库,可以通过pip命令进行安装。安装完成后,就可以导入pandas库并开始处理Excel文件。 读取Excel文件也非常简单,可以使用`pandas.read_excel()`函数读取Excel文件,并指定文件路径和工作表名称等参数。读取完成后,数据就会以DataFrame的形式存储在内存中。 处理Excel文件之后,可以对数据进行各种操作。例如,可以使用`DataFrame.drop()`函数删除不需要的列或行;使用`DataFrame.describe()`函数显示数据的统计信息;使用`DataFrame.groupby()`函数分组数据并进行汇总等。 对于较大的Excel文件,Pandas库也提供了分块读取数据的功能,以便更高效地处理数据。还可以使用Pandas库来创建和写入Excel文件,这样可以将数据写入新的Excel文件中并保存。 总之,使用Pandas处理Excel文件可以帮助Python用户轻松地读取、处理和写入Excel文件,并提供了丰富的数据操作功能,可以有效地提高数据处理效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

半岛铁子_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值