在不创建组合产品的情况下取消熊猫系列的嵌套

问题描述

我有

df = pd.DataFrame(
    {
     "A": [["a","b","c"],["d"]],"B": [[1,2,3],[4]],"C": [["abc"],["def"]]
    }
)
     A          B           C
0   [a,b,c]   [1,3]   [abc]
1   [d]         [4]         [def]

我的预期输出是:

   A  B  C
0  a  1  abc
1  b  2  abc
2  c  3  abc
3  d  4  def

我尝试过

df = df.explode("A")
df = df.explode("B")

但是它创建了一个“组合产品”并保留了索引。

解决方法

您可以将df.applypd.Series.explode一起使用

df.apply(pd.Series.explode) #.reset_index(drop=True) If required.

   A  B    C
0  a  1  abc
0  b  2  abc
0  c  3  abc
1  d  4  def
,

可能有一个更简单的解决方案,但是您可以立即尝试

newdf=df.explode("A")
newdf['B'] = df.explode("B")['B']
newdf['C'] = newdf['C'].str[0]
newdf.reset_index(drop=True)

输出

    A   B   C
0   a   1   abc
1   b   2   abc
2   c   3   abc
3   d   4   def