使用熊猫重组数据框

测试

我有以下数据框。

a1 = [1,2,3]
a2 = [[[11,'a'],[12, 'b'],[13,'c']], [[21,'a'],[22, 'a']], [[31, 'b']]]

df = pd.DataFrame({'col1': a1,
                   'col2': a2})

   col1                         col2
0     1  [[11, a], [12, b], [13, c]]
1     2           [[21, a], [22, a]]
2     3                    [[31, b]]

我想将其转换为此数据框

c1   c2    c3
1    11    a
1    12    b
1    13    c
2    21    a
2    22    a
3    31    b

谁能告诉我该怎么做。非常感谢。

耶斯列尔

使用DataFrame.explode的转换嵌套名单系列,然后通过创建新列DataFramecosntructor:

df = df.explode('col2').rename(columns={'col1':'c1'}).reset_index(drop=True)
df[['c2','c3']] = pd.DataFrame(df.pop('col2').tolist(), index=df.index)
print (df)
   c1  c2 c3
0   1  11  a
1   1  12  b
2   1  13  c
3   2  21  a
4   2  22  a
5   3  31  b

或对元组使用嵌套嵌套列表的列表理解:

L = [(v['col1'], x[0], x[1]) for k, v in df.to_dict('index').items() for x in v['col2']]

df = pd.DataFrame(L, columns=['c1','c2','c3'])
print (df)
   c1  c2 c3
0   1  11  a
1   1  12  b
2   1  13  c
3   2  21  a
4   2  22  a
5   3  31  b

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章