2 回答

TA贡献1878条经验 获得超4个赞
In [200]: df
Out[200]:
col1 col2
0 animal cat;dog;cat
1 animal dog
2 animal fish
3 color black;green
4 color red
In [201]: (df.set_index('col1')
.col2.str.split(';', expand=True)
.stack()
.reset_index(level=1, drop=True)
.reset_index(name='col2'))
Out[201]:
col1 col2
0 animal cat
1 animal dog
2 animal cat
3 animal dog
4 animal fish
5 color black
6 color green
7 color red

TA贡献1880条经验 获得超4个赞
使用numpy.repeat和itertools.chain:
import numpy as np
from itertools import chain
split = df['col2'].str.split(';')
res = pd.DataFrame({'col1': np.repeat(df['col1'], split.map(len)),
'col2': list(chain.from_iterable(split))})
print(res)
col1 col2
0 animal cat
0 animal dog
0 animal cat
1 animal dog
2 animal fish
3 color black
3 color green
4 color red
添加回答
举报