pandas将excel中多行多列单元格含有多个值拆分为一对一单行显示的方法(explode函数)
·
最近接了一个私人项目,今天在处理项目中数据的时候遇到这样的一组数据(数据已经处理过,只为示例):

看掌柜用红色框住的两处,可以发现该多行单元格里不止一个值在里面,而且该数据集不止一列是这样的情况。。。如果你熟悉pandas的用法,肯定会第一时间说👉 “用explode方法”。
没错,确实可以用该方法处理单元格里面含有多个值的情况;但是官方只给出了处理单列的示例!!!(我们可以回顾一下pandas的官方exploded的用法和相关示例操作👇)

看到没,官方的解释是该方法可以复制索引值并转换像列表一样的数据到每一行显示。

从上面的示例可以看出来这里确实如此;不过掌柜这里遇到的是多列/多字段含列表值的情况!
那么该怎么处理呢???
掌柜搜了一下StackOverflow后发现有同样疑问的朋友,他给出的方法就是👉使用apply函数给指定字段进行字符串切割变化后再用explode变换,最后用pd.concat()方法对多列进行合并。 于是掌柜实践了一下,还真是搞定了:
exploded = df[['客户', '型号']].apply(lambda x: [y.split(',') for y in x]).apply(pd.Series.explode)
df1 = pd.concat([df['日期'], exploded], axis=1)
df1
最后生成的新数据集如下:

成功对索引进行了复制,并拆分了“客户”和“型号”两列中每个单元格里的数据为1V1的单行显示😁。
更多推荐


所有评论(0)