相关疑难解决方法(0)

如何将列和行的pandas DataFrame子集转换为numpy数组?

我想知道是否有更简单,内存有效的方法从pandas DataFrame中选择行和列的子集.

例如,给定此数据帧:

df = DataFrame(np.random.rand(4,5), columns = list('abcde'))
print df

          a         b         c         d         e
0  0.945686  0.000710  0.909158  0.892892  0.326670
1  0.919359  0.667057  0.462478  0.008204  0.473096
2  0.976163  0.621712  0.208423  0.980471  0.048334
3  0.459039  0.788318  0.309892  0.100539  0.753992

我只想要那些列'c'的值大于0.5的行,但我只需要列'b'和'e'来表示这些行.

这是我提出的方法 - 也许有更好的"熊猫"方式?

locs = [df.columns.get_loc(_) for _ in ['a', 'd']]
print df[df.c > 0.5][locs]

          a         d
0  0.945686  0.892892

我的最终目标是将结果转换为numpy数组以传递给sklearn回归算法,因此我将使用上面的代码,如下所示:

training_set = array(df[df.c > 0.5][locs])

......因为我最终在内存中留下了一个巨大的数组副本,这让我感到很恼火.也许有更好的方法呢?

python arrays numpy pandas scikit-learn

42
推荐指数
3
解决办法
11万
查看次数

标签 统计

arrays ×1

numpy ×1

pandas ×1

python ×1

scikit-learn ×1