Python 使用pandas.Series.explode()时重复其他列值

Python 使用pandas.Series.explode()时重复其他列值,python,pandas,Python,Pandas,我有一个表格的数据框 a b 0 [a, b] 0 1 [c, d, e] 1 我编写了一个函数来创建部分列表: def partials(l): result = [] for i, elem in enumerate(l): result.append(l[:i+1]) return result 将其应用于系列df['a'],并使用d['a']进行分解。应用(部分)。分解()正确给出: 0

我有一个表格的数据框

    a           b
0   [a, b]      0
1   [c, d, e]   1
我编写了一个函数来创建部分列表:

def partials(l):
    result = []
    for i, elem in enumerate(l):
        result.append(l[:i+1])
    return result
将其应用于系列
df['a']
,并使用
d['a']进行分解。应用(部分)。分解()正确给出:

0          [a]
0       [a, b]
1          [c]
1       [c, d]
1    [c, d, e]
然而,这个系列必然比原来的要长。如何将此函数应用于我的数据帧的列
a
,使列
b
在“分解”原始数据帧的对应行的任何位置重复其值,如下所示:

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

您可以重新加入:

(df['a'].apply(partials)
   .explode().to_frame()
   .join(df.drop('a', axis=1))
)
输出:

           a  b
0        [a]  0
0     [a, b]  0
1        [c]  1
1     [c, d]  1
1  [c, d, e]  1
您可以重新加入:

(df['a'].apply(partials)
   .explode().to_frame()
   .join(df.drop('a', axis=1))
)
输出:

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

您可以使用原始代码并对
explode
进行轻微修改。首先分配:
df['a']=df['a']。应用(部分)
,然后在列“a”上分解:
df.explode('a')
您可以使用原始代码,并对
explode
进行轻微修改。首先赋值:
df['a']=df['a']。应用(部分)
,然后在列“a”上分解:
df.explode('a')