使用pandas split、explode实现按字符分割列并转为多行 您所在的位置:网站首页 python中多行变成一行 使用pandas split、explode实现按字符分割列并转为多行

使用pandas split、explode实现按字符分割列并转为多行

2024-07-09 12:30| 来源: 网络整理| 查看: 265

假设有这么一组数据:

>>> df = pd.DataFrame([{'编码':'01', '价格':'1.1,1.3,3.4', '水果':'苹果,柿子,梨'},{'编码':'01', '价格':'2.2,3.4', '水果':'桔子,香蕉'}]) >>> print(df) 编码 价格 水果 0 00 1.1,1.3,3.4 苹果,柿子,梨 1 01 2.2,3.4 桔子,香蕉

其中价格和水果是按照位置一一对应的,如苹果:1.1、柿子:1.3、梨:3.4,我们希望将价格与水果两列都拆开,但又不影响水果名与价格的对应关系

编码 价格 水果 0 00 1.1 苹果 1 00 1.3 柿子 2 00 3.4 梨 3 01 2.2 桔子 4 01 3.4 香蕉

通过如下操作即可实现

>>> df.set_index(['编码']).apply(lambda x: x.str.split(',').explode()).reset_index()

其中set_index和reset_index()是为了锁定编码列,防止误将其进行拆分,上面例子中编码列不存在逗号,因而这步加不加对结果没有影响。 在使用过程中发现,如果set_index中列数过多容易报错,因而可将原表拆为两部分,一部分为不需要拆分的列,另一部分仅为需要拆分的列;然后将后者拆分后再通过某公共列进行merge。 参考:https://stackoverflow.com/a/50731254



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有