如何获取数据框并按列将其拆分为单个列表?

时间:2017-10-17 14:42:49

标签: python-2.7 pandas anaconda

正如问题所说,我有一个非常大的数据框,但看起来像:

        ID    Count    ValueX    Value 2    Value 3
RowX    1      234.     255.       yes.      yes
RowY    1      123.     135.       543.      342
RowW    1      234.     235.       yes.      yes
RowJ    1      123.     115.       543.      342
RowA    1      234.     285.       yes.      yes
RowR    1      123.     165.       543.      342
RowX    2      234.     255.       yes.      yes
RowY    2      123.     135.       543.      342
RowW    2      234.     235.       yes.      yes
RowJ    2      123.     115.       543.      342
RowA    2      234.     285.       yes.      yes
RowR    2      123.     165.       543.      342
.
.
.
RowX    1233   234.     255.       yes.      yes
RowY    1233   123.     135.       543.      342
RowW    1233   234.     235.       yes.      yes
RowJ    1233   123.     115.       543.      342
RowA    1233   234.     285.       yes.      yes
RowR    1233   123.     165.       543.      342

我想要的是能够获取df并按列将其拆分为列表,以便我最终得到IDCountValueX,{{ 1}}和其余部分。目前,我这样做:

Value 2

这给了我需要的解决方案,但是我想知道是否有更短的方法将df拆分成列表。

1 个答案:

答案 0 :(得分:0)

您可以创建嵌套列表:

L = df.values.T.tolist()

print (L)
[[1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2],
 [234.0, 123.0, 234.0, 123.0, 234.0, 123.0, 234.0, 123.0, 234.0, 123.0, 234.0, 123.0],
 [255.0, 135.0, 235.0, 115.0, 285.0, 165.0, 255.0, 135.0, 235.0, 115.0, 285.0, 165.0], 
 ['yes.', '543.', 'yes.', '543.', 'yes.', '543.','yes.','543.','yes.','543.','yes.','543.'],
 ['yes', '342', 'yes', '342', 'yes', '342', 'yes', '342', 'yes', '342', 'yes', '342']]

您可以通过以下位置访问:

print (L[0])
[1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2]

或者更好地创建list s的字典:

d = df.to_dict('l')
print (d)
{
'Count':[234.0, 123.0, 234.0, 123.0, 234.0, 123.0, 234.0, 123.0, 234.0, 123.0, 234.0, 123.0],
'Value 3':['yes', '342', 'yes', '342', 'yes', '342','yes','342', 'yes', '342', 'yes', '342'],
'ID': [1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2], 
'Value 2': ['yes.', '543.', 'yes.', '543.', 'yes.', '543.', 
            'yes.', '543.', 'yes.', '543.', 'yes.', '543.'], 
'ValueX':[255.0, 135.0, 235.0, 115.0, 285.0, 165.0, 255.0, 135.0, 235.0, 115.0, 285.0,165.0]
}

您可以按列名访问,如:

print (d['ID'])
[1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2]