首页  >  文章  >  后端开发  >  如何在 Pandas DataFrame 中将逗号分隔的单元格拆分为多行?

如何在 Pandas DataFrame 中将逗号分隔的单元格拆分为多行?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-11-03 05:05:03568浏览

How can I split a comma-separated cell into multiple rows in a Pandas DataFrame?

将 Pandas 数据框中的单元格拆分为多行

Pandas 提供了全面的数据操作工具,包括拆分包含多个逗号分隔值的单元格的功能分成多行。在本指南中,我们将根据 pandas 的版本探索使用两种不同方法来实现此目的。

pandas >= 0.25

对于 pandas 0.25 及更高版本,您可以使用组合apply、str.split 和 Series.explode 来实现所需的结果。代码片段如下:

<code class="python">(df.set_index(['order_id', 'order_date'])
   .apply(lambda x: x.str.split(',').explode())
   .reset_index())                                                   </code>

说明:

  1. set_index(['order_id', 'order_date']): 设置 order_id 和 order_date 列作为在后续操作中保留它们的索引。
  2. apply(lambda x: x.str.split(',').explode()):对每一行应用 lambda 函数。它将逗号分隔符上的单元格值(package 和 package_code)拆分,并将结果列表分解为多行。
  3. reset_index():重置索引以创建一个新的 DataFrame,并将分解的值作为单独的行。

pandas

对于 pandas 0.24 及以下版本,需要更复杂的方法,涉及 stack、unstack 和 str.split:

<code class="python">(df.set_index(['order_date', 'order_id'])
   .stack()
   .str.split(',', expand=True)
   .stack()
   .unstack(-2)
   .reset_index(-1, drop=True)
   .reset_index()
)</code>

说明:

  1. 与之前的方法类似,set_index 将 order_date 和 order_id 设置为索引。
  2. stack() 折叠行并将它们堆叠为一个单列。
  3. str.split(',', Expand=True) 根据逗号分隔符将组合值拆分为多列。
  4. stack() 将列堆叠起来以创建单个列再次列。
  5. unstack(-2) 在倒数第二个级别取消堆叠 DataFrame 以创建包含拆分值的行。
  6. reset_index(-1, drop=True) 删除额外的级别
  7. reset_index() 添加一个新索引来创建一个新的 DataFrame。

两种方法都会返回一个新的 DataFrame,其中分解的值作为单独的行,如下所示您提供的所需输出。

以上是如何在 Pandas DataFrame 中将逗号分隔的单元格拆分为多行?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn