pandas 按行爆炸列表值

问题描述 投票:0回答:1

我有一个像这样的数据框

data = [[1, [10, 11]], [1, [15, 16]], [2, [20, 24]], [2, [22, 23]]] 
df = pd.DataFrame(data, columns = ['id', 'val']) 

   id   val
0   1   [10, 11]
1   2   [15, 16]

这里

val
中每个列表的长度是相同的。

我想按行爆炸

val
。我无法找到一种直接的方法来做到这一点。 所以作为解决办法,我使用了

df.explode('val')

现在我想使用

df.pivot
但在此之前我想为每个
id
添加列名称。 像这样的东西

    id  val col_name
0   1   10  col_1
0   1   11  col_2
1   2   15  col_1
1   2   16  col_2

如何使用

col_name
添加
groupby
? 这将帮助我旋转数据框。 还有没有任何直接的方式按行爆炸,看起来像

id   col_1  col_2       
1   10      11
2   15      16
pandas
1个回答
0
投票

代码

out = pd.DataFrame(df['val'].tolist(), index=df['id'], columns=['col_1', 'col_2'])

    col_1   col_2
id      
1   10      11
2   15      16
© www.soinside.com 2019 - 2024. All rights reserved.