我有一个类似下面的df
a = pd.DataFrame([{'col1': ['a,b,c'], 'col2': 'x'},{'col1': ['d,b'], 'col2': 'y'}])
当我使用df.explode(‘col1’)
进行爆炸时,我得到的结果如下
col1 col2
a x
b x
c x
d y
b y
但是,我想要下面的东西,
col1 col2 col1_index
a x 1
b x 2
c x 3
d y 1
b y 2
有人可以帮我吗?
答案 0 :(得分:2)
您可以执行以下操作:
result = a.explode('col1').reset_index().rename(columns={'index' : 'col1_index'})
result['col1_index'] = result.groupby('col1_index').cumcount()
print(result)
输出
col1_index col1 col2
0 0 a x
1 1 b x
2 2 c x
3 0 d y
4 1 b y
答案 1 :(得分:2)
爆炸后,您可以简单地进行以下操作:
a['col1_index'] = a.groupby('col2').cumcount()+1
col1 col2 col1_index
0 a x 1
1 b x 2
2 c x 3
3 d y 1
4 b y 2