从特定的Pandas列中创建元组

时间:2014-02-26 20:00:16

标签: python pandas dataframe

我有一个pandas数据帧,例如

   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,2,4],[1,1,1]]

理想情况下,我希望避免迭代行,因为它很慢!

2 个答案:

答案 0 :(得分:5)

您可以选择以下列:

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]]

注意:除非这是你的最终游戏,否则永远不需要这样做......在pandas或numpy中进行 work 会更有效率。

答案 1 :(得分:2)

所以我找到了如何做到这一点。

首先,我们选择我们想要的值的列:

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

这为我们提供了一个子集df。

现在我们可以选择值:

> y.values

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