Python 2.7 如何获取数据帧并按列将其拆分为单独的列表?

Python 2.7 如何获取数据帧并按列将其拆分为单独的列表?,python-2.7,pandas,anaconda,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. 1

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

        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并按列将其拆分为列表,这样我就可以得到
ID
Count
ValueX
Value 2
以及其余部分的列表。目前,我的做法是:

IDlist = df_original.ID.tolist()
Countlist = df_original.Count.tolist()
...

这为我提供了所需的解决方案,但我想知道是否有一种将df拆分为列表的较短方法。

您可以创建嵌套列表:

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]

您可以创建嵌套列表:

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]

你说的“更短”是指更短的代码行吗?或者你想要一个循环来生成一个列表列表?或者真的,现在我正在手动创建33个列表当你说“更短”时,你是指更短的代码行吗?或者你想要一个循环来生成一个列表列表?或者真的,现在我正在手动创建33个列表。你可以更深入地了解它的功能吗?好的,唯一的问题是你需要嵌套列表吗?还是不?我不需要嵌套列表,我认为第二种解决方案更好。非常感谢!你们能再深入一点吗?好的,唯一的问题是你们需要嵌套列表吗?还是不?我不需要嵌套列表,我认为第二种解决方案更好。非常感谢!