盘点一个Excel数据分割和explode()实战问题

Python进阶者
• 阅读 62

大家好,我是皮皮。

一、前言

前几天在Python白银交流群【Jethro Shen】问了一个Pandas数据处理的问题。问题如下:各位大佬这种情况我怎么处理一下啊?标记的商品内容后后面的数量是一一对应的 想把它们铺开。

盘点一个Excel数据分割和explode()实战问题

下面是他自己写的代码:

jigou_df = pd.read_excel(jigou_path)
data = {'商品内容':jigou_df['商品内容'],'数量':jigou_df['数量']}
df = pd.DataFrame(data)
df_expanded = df.assign(数量=df['数量'].astype(str).str.split(',')).explode('数量')
df_expanded.reset_index(drop=True, inplace=True)
df_expanded

不过运行结果不是他想要的。

二、实现过程

后来【瑜亮老师】给了一个提示:先对两列执行split,然后再对两列explode,df = df.explode(['商品内容', '数量']).reset_index(drop=True)

这里【东哥】给出了具体的代码,如下所示:

import pandas as pd

df = pd.read_excel("机构订单_202401091514_1.0.xlsx")
# 使用split()函数拆分【商品内容】列的内容
df['商品内容'] = df['商品内容'].str.split('、')
df['数量'] = df['数量'].str.split('、')
# 使用explode()函数将拆分后的结果与【数量】列的内容进行合并
result = df.explode(['商品内容', '数量']).reset_index(drop=True)
# result = df.explode('商品内容').reset_index(drop=True)
print(result)

盘点一个Excel数据分割和explode()实战问题

结果是可以出来的,不过最后两行却是nan,这个是为啥?我看excel中数据类型是数值,不是字符串,得到的结果就是nan。

盘点一个Excel数据分割和explode()实战问题

如果我把最后两行手动改为字符串格式的话,结果正常显示。

盘点一个Excel数据分割和explode()实战问题

盘点一个Excel数据分割和explode()实战问题

后来搞定了,df['数量'] = df['数量'].astype("string").str.split('、'),加一行转字符串就好了。

盘点一个Excel数据分割和explode()实战问题

顺利地解决了粉丝的问题。也可以读取的时候直接dtype=str这样避免这类的问题,也可以用astype,还可以map的时候lambda中用str(x).split,反正方法很多,都可以避免这类的问题。

盘点一个Excel数据分割和explode()实战问题

如果你也有类似这种数据分析的小问题,欢迎随时来交流群学习交流哦,有问必答!

三、总结

大家好,我是皮皮。这篇文章主要盘点了一个Pandas数据处理的问题,文中针对该问题,给出了具体的解析和代码实现,帮助粉丝顺利解决了问题。

最后感谢粉丝【Jethro Shen】提出的问题,感谢【瑜亮老师】、【东哥】给出的思路,感谢【莫生气】、【冯诚】等人参与学习交流。

【提问补充】温馨提示,大家在群里提问的时候。可以注意下面几点:如果涉及到大文件数据,可以数据脱敏后,发点demo数据来(小文件的意思),然后贴点代码(可以复制的那种),记得发报错截图(截全)。代码不多的话,直接发代码文字即可,代码超过50行这样的话,发个.py文件就行。

盘点一个Excel数据分割和explode()实战问题

点赞
收藏
评论区
推荐文章
Python进阶者 Python进阶者
1年前
怎么用Python把左边这种转成右边这种?
大家好,我是皮皮。一、前言前几天在Python白银交流群【惜君】问了一个Pandas处理Excel的问题,这里拿出来给大家分享下。下面是粉丝自己写的代码:二、实现过程看上去是分组,聚合。这里【此类生物】提出使用.sum().unstack()方法,可以得到
Python进阶者 Python进阶者
1年前
根据uid进行分组后,然后组内,按照mon进行升序,怎么写语句呢?
大家好,我是皮皮。一、前言前几天在Python白银交流群【空翼】问了一个Pandas处理的问题,提问截图如下:!(https://uploadimages.jianshu.io/upload_images/26239789773
Python进阶者 Python进阶者
5个月前
Pandas实现这列股票代码中10-12之间的股票筛出来
大家好,我是皮皮。一、前言前几天在Python白银交流群【YVONNE🎉】问了一个Pandas数据分析的问题,一起来看看吧。问题描述:原始数据长这样,我需要把SHRCD这列股票代码中1012之间的股票筛出来。原始数据如下图所示:他的报错内容如下所示:他说
Python进阶者 Python进阶者
4个月前
盘点一个pyinstaller打包失败的问题
大家好,我是皮皮。一、前言前几天在Python白银交流群【JethroShen】问了一个mac机器下pyinstaller打包的问题,一起来看看吧。问题如下:群里有会使用pyinstaller的大佬吗?有个问题打包后正常运行程序也不报错但是就是不能生成想要
Python进阶者 Python进阶者
4个月前
一个excel文件,我用pandas如何取行,只能用pandas?
大家好,我是皮皮。一、前言前几天在Python白银交流群粉丝问了一个Pandas数据筛选的问题。问题如下:我突然想到,如果一个excel文件,我用pandas如何取行,只能用pandas。二、实现过程后来【月神】给了一个思路和代码如下:其实粉丝之前也问了一
Python进阶者 Python进阶者
4个月前
为啥替换后int类的数据直接NaN了,加了判断也是没替换成功?
大家好,我是皮皮。一、前言前几天在Python最强王者交流群【哎呦喂是豆子~】问了一个Pandas数据处理问题,一起来看看吧。问题描述:大佬们这个是为啥呀啊?为啥替换后int类的数据直接NaN了加加了判断也是没替换成功原始数据如下:pythonttpd.D
Python进阶者 Python进阶者
4个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这
Python进阶者 Python进阶者
2个月前
盘点一个Python自动化办公Excel数据处理的需求
大家好,我是Python进阶者。一、前言前几天在Python白银交流群【干锅牛蛙】问了一个Python处理Excel数据的问题。问题如下:有两个问题哈:1、表头有合并单元格识别不出来,如何处理类似下图2、遇到单元格有公式自动识别成了0,如何处理,保留计算后
Python进阶者 Python进阶者
1年前
盘点一个Pandas处理的基础题目
大家好,我是皮皮。一、前言前几天在Python星耀交流群【dcpeng】问了一个Pandas基础的问题,提问截图如下:原始代码如下:importpandasaspdfromdataclassesimportdataclass@dataclassclassC:a:int0b:int0@propertydefad
Python进阶者 Python进阶者
1星期前
有遇到过吗?同样的规则 Excel 中 比Python 结果大
大家好,我是Python进阶者。一、前言前几天在Python白银交流群【JethroShen】问了一个Python处理Excel数据读取的问题。问题如下:有遇到过吗?同样的规则Excel中比Python结果大?二、实现过程这里【瑜亮老师】和【论草莓如何成为