0
点赞
收藏
分享

微信扫一扫

将多列单元格中的多个数据拆分为多行数据(explode方法扩展使用)


将多列单元格中的多个数据拆分为多行数据(explode方法扩展使用)

  • ​​1 业务需求​​
  • ​​2 发现问题​​
  • ​​3 解决问题​​
  • ​​4 实际操作​​

手动反爬虫:​​原博地址​​

知识梳理不易,请尊重劳动成果

如若转载,请标明出处,谢谢!

1 业务需求

在经过昨天梳理​​通过日期字段提取年月日、timedelta提取时分秒并进行小时汇总​​后,今天发现业务需求中里面要求对入职时间和培训时间的信息进行处理分析,结果拿到的数据是一个单元格里存在多个数据,就需要进行数据的处理,如下。

将多列单元格中的多个数据拆分为多行数据(explode方法扩展使用)_pandas

2 发现问题

根据昨天梳理的博客,可以直接尝试进行两个字段的相加减的操作,试一下,结果就是因为上面的图示,数据中将两个人的信息填报到一个表格中了,而且两列的数据是一一对应的,那么想要进行时间字段的相加减,就必须将这个多列单元格的多个数据拆分为多行

将多列单元格中的多个数据拆分为多行数据(explode方法扩展使用)_数据分析_02

3 解决问题

之前介绍的博客中有涉及到​​单列将单元格中的多个数据拆分为多行数据(explode方法使用)​​,今天遇到的问题却是多列的操作,可以先看一下使用原来的方法还能不能凑效,还是以官网的数据为例,再添加一列C,值为复制A列中的内容

import pandas as pd
df = pd.DataFrame({'A': [[1, 2, 3], 'foo', [], [3, 4]], 'B': 1,'C':[[1, 2, 3], 'foo', [], [3, 4]]})

输出结果为:

将多列单元格中的多个数据拆分为多行数据(explode方法扩展使用)_数据分析_03


然后使用explode()方法,分别对AC两列进行处理,可以发现这种两次的explode会把两列的所有的可能性都组合起来,但是实际上的数据是一一对应的,比如一个单元格有两个时间数据,那么就对应两个人,另一列同一行的数据也是这两个人的特征,因此应该保证一致性

将多列单元格中的多个数据拆分为多行数据(explode方法扩展使用)_大数据_04


故直接使用两次explode是不行的,但是仔细研究发现,可以按照单次的explode然后再进行合并,接着就是尝试一下,结果如下。可以发现原来是四条数据,加上单元格中的多个数据,最终提取的是7条,刚好满足一一对应的关系,因此就完成了将多列单元格中的多个数据拆分为多行数据的目标

将多列单元格中的多个数据拆分为多行数据(explode方法扩展使用)_pandas_05

4 实际操作

那么直接对业务数据进行操作,先将两个目标字段进行所需格式的转化,这个在​​单列将单元格中的多个数据拆分为多行数据(explode方法使用)​​中提到过,这里直接使用

将多列单元格中的多个数据拆分为多行数据(explode方法扩展使用)_pandas_06


然后分别对两个字段进行explode,为了验证是否真正的拆分开,先检查一下输出结果,如下

将多列单元格中的多个数据拆分为多行数据(explode方法扩展使用)_大数据_07


接着对下一个字段拆分最后进行合并,操作结果如下,成功实践完成了业务处理的一个小问题

将多列单元格中的多个数据拆分为多行数据(explode方法扩展使用)_pandas_08


完结、撒花✿✿ヽ(°▽°)ノ✿


举报

相关推荐

0 条评论