我有一个包含200行的excel文件,其中2行中包含逗号分隔值。如果我将它们输出到制表符分隔符,它将如下所示:
col1 col2 col3
a b,c d,e
f g,h i,j
我需要爆炸才能获得这样的数据帧,将200行扩展到~4,000:
col1 col2 col3
a b d
a b e
a c d
a c e
f g i
f g j
f h i
f h j
我没有看到熊猫中的任何爆炸功能,而且我们已经能够弄清楚如何使逗号分隔值的列长度不均匀 - 不确定分割在这里如何工作。
帮我堆叠溢出,你是我唯一的希望。谢谢!
答案 0 :(得分:5)
使用itertools.product获取col2和col3之间的所有组合,然后将它们转换为单独的列
from itertools import product
df.set_index('col1')\
.apply(lambda x: pd.Series(list(product(x.col2.split(','),x.col3.split(',')))),axis=1)\
.stack()\
.reset_index(1,drop=True)\
.apply(pd.Series)\
.reset_index().rename(columns={0:'col1',1:'col3'})
Out[466]:
col1 col1 col3
0 a b d
1 a b e
2 a c d
3 a c e
4 f g i
5 f g j
6 f h i
7 f h j