简体   繁体   English

如何转换熊猫数据框中的列表列?

[英]how to convert a list column in pandas dataframe?

I have a pandas dataframe in this format: 我有以下格式的熊猫数据框:

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

But I wanna to split each array into cells. 但是我想将每个数组拆分为单元格。 Is there any way to do this? 有什么办法吗?

You can using stack with apply 您可以在apply使用stack

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

Use np.column_stack 使用np.column_stack

Consider the sample data frame 考虑样本数据框

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]

Simple expansion 简单扩展

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM