2014-02-26 117 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]])