2014-02-26 80 views
0

我有一个熊猫数据框,例如从特定熊猫列制作元组

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

我想什么是能够仅列的选择数转换到一个列表,这样我们得到:

[[1,2],[1,1]] 

这是第0,1行,我们在哪里选择第一和第二列。

同样,如果我们选择了两个,四列之一:

[[1,2,4],[1,1,1]] 

理想我想避免行的迭代,因为它是慢!

+0

你想一个元组列表或列表的列表? – Drewness

+0

现在我需要元组,但在将来我可能需要列表的列表,所以这将是伟大的 – redrubia

回答

4

您可以只选择那些列:

In [11]: df[['one', 'two']] 
Out[11]: 
    one two 
0 1 2 
1 1 1 

,并使用tolist从底层numpy的阵列获取列表清单:

In [12]: df[['one', 'two']].values.tolist() 
Out[12]: [[1, 2], [1, 1]] 

In [13]: df[['one', 'two', 'four']].values.tolist() 
Out[13]: [[1, 2, 4], [1, 1, 1]] 

注:这应该从未真正是必要的,除非这是你的终极游戏......在熊猫或numpy里面做工作会更有效率。

+0

tahnks @andy我不知道哪种方法更好,我自己的下面或你的。看起来好像很多 – redrubia

+0

@redrubia values属性是numpy的底层numpy数组,tolist *将*转换为您希望的列表列表。这真的取决于下一步是什么!否则,这是[XY问题](http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem)! –

1

所以我研究了如何去做。

首先,我们选择列,我们希望从值:

y = x[['one','two']] 

这给了我们一个子集DF。

现在,我们可以选择的值:

> y.values 

array([[1, 2], 
     [1, 1]])