我有一个pandas dataframe对象,如下所示:
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]]
我该怎么做?谢谢你的帮助。
答案 0 :(得分:35)
最简单的方法可能是list(dt.T.itertuples())
(其中dt
是您的数据框)。这会生成一个元组列表。
答案 1 :(得分:10)
上面的@BrenBarn答案会产生一个元组列表,而不是所讨论的列表列表。我特别需要一个列表列表,以便能够使用DataNitro将数据帧写入spreadsheed。使用列表推导改编了上面的例子:
[list(x) for x in dt.T.itertuples()]
根据需要产生结果
答案 2 :(得分:5)
严格来说,如果你想要嵌套列表(而不是元组列表),你可以做到
df.values.tolist()
因为df.values是一个numpy数组。这将为您提供所需的列表列表:
[[0.0001313652121930252, 3.5915356549999985e-05],
[3.5915356549999985e-05, 0.00011634321240684215]]
答案 3 :(得分:3)
我天真的方法是使用iteritems,将'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)
答案 4 :(得分: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]]