当前视讯!Pandas实战小技巧,很多列的Explode多行!
(资料图)
今天在蚂蚁老师的交流学习群中看到有一个同学问的一个关于excel自动化处理的问题,最近刚学完蚂蚁老师的Python实现Excel办公自动化系列课程,正好牛刀小试一下。
需求有一个表格需要转置成另外一个形式的表,如图:
其实可以理解批量对多个产品进行分类汇总
思路1、按产品拆成多个DataFrame2、批量合并多个DataFrame3、按订单号分组,数量排序4、写到excel中难点是如何按产品拆成多个DataFrame,我的思路是这样的,使用pandas读取文件,"订单号"作为索引列,获取到DataFrame的字段信息,这些字段涵盖了每个产品的信息,然写个方法将一个列表按指定数目分成多个列表的,每一个小列表就是每个产品的字段信息,那么就可以活获取到对应的数据了。解决了这个问题剩余的就比较简单了。就是合并数据,处理数据,写excel。
代码实现#--coding:utf-8--#@Time:2022/7/2721:54#@Author:小牛刀#@File:批量对多个产品进行分类汇总.py#@Software:PyCharmimportpandasaspdimportxlwingsasxw#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)##把一个列表按指定数目分成多个列表的deflist_of_groups(init_list,children_list_len):list_of_groups=zip(*(iter(init_list),)*children_list_len)end_list=[list(i)foriinlist_of_groups]count=len(init_list)%children_list_lenend_list.append(init_list[-count:])ifcount!=0elseend_listreturnend_list#将产品分割成指定字段columns_list=list_of_groups(columns_list,5)df_list=[]forcolincolumns_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(lambdax: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带副业全套餐有优惠!!!
相关阅读
-
世界热推荐:今晚7:00直播丨下一个突破...
今晚19:00,Cocos视频号直播马上点击【预约】啦↓↓↓在运营了三年... -
NFT周刊|Magic Eden宣布支持Polygon网...
Block-986在NFT这样的市场,每周都会有相当多项目起起伏伏。在过去... -
环球今亮点!头条观察 | DeFi的兴衰与...
在比特币得到机构关注之后,许多财务专家预测世界将因为加密货币的... -
重新审视合作,体育Crypto的可靠关系才能双赢
Block-987即使在体育Crypto领域,人们的目光仍然集中在FTX上。随着... -
简讯:前端单元测试,更进一步
前端测试@2022如果从2014年Jest的第一个版本发布开始计算,前端开发... -
焦点热讯:刘强东这波操作秀
近日,刘强东发布京东全员信,信中提到:自2023年1月1日起,逐步为...