嗨,我正在努力解开这个Pandas 的嵌套列表.有人能帮帮忙吗?

这是数据帧

df = pd.DataFrame({"a" : [1,2], "b" : [['a','b',['c','d']],['a',['b','c']]]})

我需要有多余的行,方法是只出栈列表中的列表,而不是整个列表.

输出数据帧应如下所示

df2 = pd.DataFrame({"a" : [1,1,2,2], "b" : [['a','b','c'],['a','b','d'],['a','b'],['a','c']]})

提前谢谢你

推荐答案

您可以使用itertools.productexplode:

from itertools import product

out = (df
  .assign(b=[list(map(list, product(*(x if isinstance(x, list) else [x]
                                      for x in l))))
             for l in df['b']])
  .explode('b')
 )

输出:

   a          b
0  1  [a, b, c]
0  1  [a, b, d]
1  2     [a, b]
1  2     [a, c]

其他示例:

   a                                       b
0  1                         [Burger, Fries]
0  1                         [Burger, Steak]
0  1                       [Burger, Chicken]
0  1                         [Burger, Salad]
1  2                 [Fries, Chicken, Steak]
1  2                   [Fries, Salad, Steak]
1  2                  [Fries, Burger, Steak]
2  3  [Burger, Chicken, Fries, Salad, Steak]

Python相关问答推荐

将输入管道传输到正在运行的Python脚本中

如何从.cgi网站刮一张表到rame?

将pandas Dataframe转换为3D numpy矩阵

使用groupby Pandas的一些操作

Python+线程\TrocessPoolExecutor

在www.example.com中使用`package_data`包含不包含__init__. py的非Python文件

在输入行运行时停止代码

在pandas/python中计数嵌套类别

循环浏览每个客户记录,以获取他们来自的第一个/最后一个渠道

查看pandas字符列是否在字符串列中

如何从比较函数生成ngroup?

如何训练每一个pandaprame行的线性回归并生成斜率

如何从一个维基页面中抓取和存储多个表格?

try 在单个WITH_COLUMNS_SEQ操作中链接表达式时,使用Polars数据帧时出现ComputeError

如何计算Pandas 中具有特定条件的行之间的天差

3.我无法找到制作这种三角形图案的方法

简化通用属性的创建

我应该使用哪一个来判断python中枚举值的唯一性?

如何在函数签名中输入数据类字段

对齐多个叠置多面Seborn CAT图