17

我有一个看起来像这样的熊猫数据框对象:

   one  two  three  four  five
0    1    2      3     4     5
1    1    1      1     1     1

我想生成一个列表对象列表,其中第一项是列标签,其余列表值是列数据值:

nested_list = [['one', 1, 1]
               ['two', 2, 1]
               ['three', 3, 1]
               ['four', 4, 1]
               ['five', 5, 1]]

我怎样才能做到这一点?谢谢您的帮助。

4

5 回答 5

36

最简单的方法可能是list(dt.T.itertuples())(你的数据框在哪里dt)。这会生成一个元组列表。

于 2012-08-04T19:31:03.777 回答
10

上面的@BrenBarn 答案产生了一个元组列表,而不是所问的列表列表。我特别需要一个列表列表,以便能够使用 DataNitro 将数据帧写入电子表格。用列表理解修改了上面的例子:

[list(x) for x in dt.T.itertuples()]

这会根据需要产生结果

于 2013-12-13T12:21:02.230 回答
6

严格来说,如果您想要嵌套列表(而不是元组列表),您可以这样做

df.values.tolist()

因为 df.values 是一个 numpy 数组。这将为您提供所需的列表列表:

[[0.0001313652121930252, 3.5915356549999985e-05], 
 [3.5915356549999985e-05, 0.00011634321240684215]]
于 2015-02-02T16:47:56.457 回答
3

我幼稚的方法是使用带有 'll' 的迭代项作为列表列表,将 l 作为单个列表。

df = DataFrame({'one':[1,1], 'two':[2,1], 'three':[3,1], 'four':[3,1] })

ll = []

for idx,row in df.iteritems():
    l = row.values.tolist()
    l.insert(0,idx)
    ll.append(l)
于 2012-08-04T23:02:21.293 回答
0

我知道的老问题,但这对我来说比其他答案更有意义。

如果这是您的数据框:

df = pd.DataFrame({'one': [1, 1], 'three': [3, 1], 'four': [4, 1],
           'five': [5, 1], 'two': [2, 1]},
          columns=['one', 'two', 'three', 'four', 'five'])

做这个:

df.T.reset_index().values.tolist()

结果

[['one', 1, 1], ['two', 2, 1], ['three', 3, 1], ['four', 4, 1], ['five', 5, 1]]
于 2016-04-12T13:53:28.843 回答