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')