如何转换pandas dataframe中的列表列?

时间:2018-04-18 01:51:19

标签: python pandas

我有这种格式的pandas数据框:

    idpso                                           pso
0   [1.0290574795443606, 20000, 3.515564441680908]  [0.041787490144988726, 20000, 11.214858293533325]

但我想把每个阵列分成几个细胞。有没有办法做到这一点?

2 个答案:

答案 0 :(得分:2)

您可以将applydf=pd.DataFrame({'v1':[[1,2]],'v2':[[2,3]]}) df.stack().apply(pd.Series) Out[638]: 0 1 0 v1 1 2 v2 2 3

一起使用
TableB.ColumnA

答案 1 :(得分:2)

使用np.column_stack

考虑样本数据框

df = pd.DataFrame(dict(
    idpso=[[1.0290, 20000, 3.5155]] * 3,
    pso=[[0.0417, 20000, 11.2148]] * 3
))

df

                    idpso                       pso
0  [1.029, 20000, 3.5155]  [0.0417, 20000, 11.2148]
1  [1.029, 20000, 3.5155]  [0.0417, 20000, 11.2148]
2  [1.029, 20000, 3.5155]  [0.0417, 20000, 11.2148]

简单扩展

pd.DataFrame(
    np.column_stack(df.values.T.tolist())
)

       0        1       2       3        4        5
0  1.029  20000.0  3.5155  0.0417  20000.0  11.2148
1  1.029  20000.0  3.5155  0.0417  20000.0  11.2148
2  1.029  20000.0  3.5155  0.0417  20000.0  11.2148

pd.concat

pd.concat({
    k: pd.DataFrame(v.tolist())
    for k, v in df.items()
}, axis=1)

   idpso                    pso                
       0      1       2       0      1        2
0  1.029  20000  3.5155  0.0417  20000  11.2148
1  1.029  20000  3.5155  0.0417  20000  11.2148
2  1.029  20000  3.5155  0.0417  20000  11.2148