我想知道是否有更简单,内存有效的方法从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])
......因为我最终在内存中留下了一个巨大的数组副本,这让我感到很恼火.也许有更好的方法呢?