Pandas将列表分解为列

2024-10-02 18:16:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我对熊猫很陌生,我有一张numpy列表,看起来是这样的:

something=[10,20,30,40,50]

当我将其转换为pandas dataframe HGower时,我将整个列表作为一个元素:

dataset = pd.DataFrame({'something': something, \
                          'something2': something2}, \
                          columns=['something', 'something2'])

我得到:

   something
0 [10,20,30,40,50]

我想要的是:

  0  1  2  3  4
0 10 20 30 40 50

即,将元素列为单独的列


Tags: columnsnumpy元素dataframepandas列表datasetsomething
3条回答

如果在Dataframe中传递dictionary,则默认情况下,将键视为一列,不需要再次指定列名称,除非需要不同的列名

我尝试了以下例子:

import pandas as pd
something1=[10,20,30,40,50]
something2=[101,201,301,401,501]

pd.DataFrame([something1,something2])

输出

    0   1   2   3   4
0   10  20  30  40  50
1   101 201 301 401 501

让我知道这对你是否有效

您可以使用^{}:

In [323]: df = pd.DataFrame.from_records([something])

In [324]: df                                                                                                                                                                                                
Out[324]: 
    0   1   2   3   4
0  10  20  30  40  50

对于多个列表,您只需执行以下操作:

In [337]: something2 = [101,201,301,401,501]                                                                                                                                                                  

In [338]: df = pd.DataFrame.from_records([something, something2])                                                                                                                                           

In [339]: df                                                                                                                                                                                                
Out[339]: 
     0    1    2    3    4
0   10   20   30   40   50
1  101  201  301  401  501

编辑:在OP的评论之后

如果希望所有列表都创建多列,可以尝试以下操作:

In [349]: something                                                                                                                                                                                         
Out[349]: [10, 20, 30, 40, 50]

In [350]: something2                                                                                                                                                                                        
Out[350]: [101, 201, 301, 401, 501]

In [351]: something.extend(something2) 

In [353]: df = pd.DataFrame.from_records([something])                                                                                                                                                       

In [354]: df                                                                                                                                                                                                
Out[354]: 
    0   1   2   3   4    5    6    7    8    9
0  10  20  30  40  50  101  201  301  401  501

pandas dataframe from dict可以帮助:

something=[10,20,30,40,50]
something2 = [25,30,22,1,5]
data = {'something':something,'something2':something2}

pd.DataFrame.from_dict(data,orient='index')

             0  1   2   3   4
something   10  20  30  40  50
something2  25  30  22  1   5

如果您不关心索引,并且希望它们是整数,reset_index应该足够了:

pd.DataFrame.from_dict(data,orient='index').reset_index(drop=True)

相关问题 更多 >