Pandas实战小技巧,很多列的Explode多行!
蚂蚁学Python
共 2548字,需浏览 6分钟
· 2022-07-27
今天在蚂蚁老师的交流学习群中看到有一个同学问的一个关于excel自动化处理的问题,最近刚学完蚂蚁老师的Python实现Excel办公自动化系列课程,正好牛刀小试一下。
需求
有一个表格需要转置成另外一个形式的表,如图:
其实可以理解批量对多个产品进行分类汇总
思路
1、按产品拆成多个DataFrame
2、批量合并多个DataFrame
3、按订单号分组,数量排序
4、写到excel中
难点是如何按产品拆成多个DataFrame,我的思路是这样的,使用pandas读取文件,'订单号'作为索引列,获取到DataFrame的字段信息,这些字段涵盖了每个产品的信息,然写个方法将一个列表按指定数目分成多个列表的,每一个小列表就是每个产品的字段信息,那么就可以活获取到对应的数据了。解决了这个问题剩余的就比较简单了。就是合并数据,处理数据,写excel。
代码实现
# -- coding: utf-8 --
# @Time : 2022/7/27 21:54
# @Author : 小牛刀
# @File : 批量对多个产品进行分类汇总.py
# @Software: PyCharm
import pandas as pd
import xlwings as xw
# app = xw.App(visible=False, add_book=False)
# wb = app.books.open('df.xlsx')
# sheet = wb.sheets[0]
# df = sheet.range('A1').options(pd.DataFrame, expand='table').value
# columns_list = list(df.columns)
df = pd.read_excel('df.xlsx',index_col='订单号')
columns_list = list(df.columns)
print(columns_list)
#
# 把一个列表按指定数目分成多个列表的
def list_of_groups(init_list, children_list_len):
list_of_groups = zip(*(iter(init_list),) * children_list_len)
end_list = [list(i) for i in list_of_groups]
count = len(init_list) % children_list_len
end_list.append(init_list[-count:]) if count != 0 else end_list
return end_list
# 将产品分割成指定字段
columns_list = list_of_groups(columns_list, 5)
df_list = []
for col in columns_list:
df1 = df[col]
# 将字段替换为指定字段
df1.columns = ['产品', '名称', '重量', '数量', '备注']
# print(df1)
df_list.append(df1)
df_all = pd.concat(df_list)
# 删除空行
df_all.dropna(inplace=True)
# 重置索引
df_all.reset_index(inplace=True)
# 按订单号分组,数量排序
new_df = df_all.groupby('订单号').apply(lambda x: x.sort_values(by='数量', ascending=False))
print(new_df)
new_df.to_excel('result.xlsx', index=False)
# wb.save()
# wb.close()
# app.quit()
总结
这个案例用到的数据技术主要是pandas处理excel,就是蚂蚁老师在课程里讲过的知识。通过这个案例发现老师的课程真的太实用了,并且温故了知识又解决了同学的问题。
写在最后
这里强烈推荐一下蚂蚁的python课程,全都面向实战,不注水,全干货。就这案例目而言,pandas,课程里都有讲过的,学完做像这样的案例就很easy。
今晚来蚂蚁老师抖音直播间,Python带副业全套餐有优惠!!!
评论
了解加密货币到加密货币的互换
1、什么是加密货币互换?加密货币到加密货币的互换是指以现行市场汇率将一种加密货币直接兑换为另一种加密货币。与需要法定货币存款和较长流程的传统交易所不同,加密货币到加密货币的互换可以无缝地促进交换。掉期在提高加密货币的流动性和效率方面发挥着重要作用。该功能使用户能够将他们的加密货币与钱包中的其他代币进
区块链头条
0
李彦宏:开源大模型不如闭源,后者会持续领先;周鸿祎:“开源不如闭源” 的言论是胡说八道
架构师大咖
架构师大咖,打造有价值的架构师交流平台。分享架构师干货、教程、课程、资讯。架构师大咖,每日推送。
公众号该公众号已被封禁0、李彦宏:开源大模型不如闭源,后者会持续领先当今
源码共读
0
【第129期】程序员的新宠:三款终端工具,让你告别Xshell!
概述 WindTerm:跨平台的SSH利器 首先介绍的是WindTerm,这是一款使用C语言开发的跨平台SSH客户端。它不仅完全免费,而且没有商业使用的限制。WindTerm支持SSH v2、Telnet、Raw Tcp等协议,而且性能出色,甚至超过了FinalShell和Electerm。功能
前端微服务
0
字节员工:35岁以后被裁员的,后来都走了哪条路?现在2-2,要不要利用最后一年拼命上个岸。
架构师大咖
架构师大咖,打造有价值的架构师交流平台。分享架构师干货、教程、课程、资讯。架构师大咖,每日推送。
公众号该公众号已被封禁在当今竞争激烈的职场环境中,年龄并不总是一个决定性
源码共读
0
上班的时候,有一群摸鱼搭子非常重要...
上班的时候,有一群摸鱼搭子非常重要!一到上班时间,他们就从四面八方涌进群里冒泡...从八卦聊到股市、从职场聊到乌X兰局势,偶尔还会复读、相亲、battle...然后,下午6点钟准时消失不见...所以你要不要加入我们一起摸鱼?我们有北京、上海、深圳、广州、杭州、武汉、成都、南京等8个城市的摸鱼群,还有
产品经理日记
0
周四002 瑞超:同样落寞的境遇——北雪平vs埃尔夫斯堡
上赛季最终排名联赛第9的北雪平本赛季伊始表现不佳,4轮战罢他们仅以1胜1平2负的战绩排在倒数第三,这支历史上曾夺得13次联赛冠军、6次杯赛冠军老牌劲旅,正如英格兰赛场上的一众百年俱乐部,在低谷中不断探索着出路。球队主教练安德烈亚斯·阿尔姆曾是AIK索尔纳及赫根队的主教练,他于今年年初刚刚拿起球队教鞭
产品与体验
0
雷军辟谣了!不是高考状元,卡里也没有冰冷的 40 亿
架构师大咖
架构师大咖,打造有价值的架构师交流平台。分享架构师干货、教程、课程、资讯。架构师大咖,每日推送。
公众号该公众号已被封禁最近很火的雷军简历,听说落魄时卡里只有冰冷的 40
源码共读
0
日本影山优佳最新杂志照,展现充满透明感的美丽
今天的图文分享的是影山优佳的杂志写真。元日向坂46的影山优佳,登上了写真杂志《周刊FLASH》5/7和5/14合并号的封面。影山优佳是日本艺人、女演员、前偶像。身高155厘米。2001年5月8日出生于东京都。2023年7月从组合日向坂46毕业,之后作为演员活跃的影山优佳,在《周刊FLAS
python教程
0