2015-09-04 344 views
0

我刚刚开始使用Python的Pandas库,并且遇到了一个我无法解决的问题。如何将嵌套在DataFrame列中的列表展开到自己的列

dictionary = {key:list} 
series = pd.Series(dictionary) 
dataframe = pd.DataFrame(series) 
print(dataframe) 

所以输出:

0 
key list 
key list 
key list 
key list 

我想获得该名单,并在列表中的每个值有它自己的列是这样的:

 0 1 2 3 4 
key val0 val1 val2 val3 val4 
key val0 val1 val2 val3 val4 
key val0 val1 val2 val3 val4 
key val0 val1 val2 val3 val4 

我怎么会去关于这样做?

回答

1

您可以直接从字典中创建的数据帧,但创建时,该keys将成为列和0/1等将成为指数,如果你希望它倒过来 - keys作为指数和0/1等栏目 - 然后您可以采取其转置。

请注意,所有的键在列表中应该有相同数量的元素。

码 -

dataframe = pd.DataFrame(dictionary).T 

示例/演示 -

In [1]: import pandas as pd 

In [2]: d = {'key1':[1,2,3,4],'key2':[2,3,4,5],'key3':[3,4,5,6]} 

In [3]: df = pd.DataFrame(d).T 

In [4]: df 
Out[4]: 
     0 1 2 3 
key1 1 2 3 4 
key2 2 3 4 5 
key3 3 4 5 6 
1

一,你可以做到这一点的方法是完全跳过创建熊猫系列,只是去正确的数据帧,然后转置数据帧:

In [1]: import pandas as pd 

In [2]: dict = {1: ['val0', 'val1', 'val2', 'val3', 'val4'], 
    ...:   2: ['val0', 'val1', 'val2', 'val3', 'val4'], 
    ...:   3: ['val0', 'val1', 'val2', 'val3', 'val4'], 
    ...:   4: ['val0', 'val1', 'val2', 'val3', 'val4']} 

将字典阅读到DataFrame中,然后用.Ttranspose()转置它:

In [3]: df = pd.DataFrame(dict).T 

In [4]: df 
Out[4]: 
     0  1  2  3  4 
1 val0 val1 val2 val3 val4 
2 val0 val1 val2 val3 val4 
3 val0 val1 val2 val3 val4 
4 val0 val1 val2 val3 val4