【发布时间】:2013-07-14 23:48:54
【问题描述】:
我想知道是否有一种更简单、内存效率高的方法来从 pandas DataFrame 中选择行和列的子集。
例如,给定这个数据框:
df = DataFrame(np.random.rand(4,5), columns = list('abcde')) 打印 df 一个 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']] 打印 df[df.c > 0.5][locs] 广告 0 0.945686 0.892892我的最终目标是将结果转换为 numpy 数组以传递给 sklearn 回归算法,因此我将像这样使用上面的代码:
training_set = array(df[df.c > 0.5][locs])... 这让我很恼火,因为我最终在内存中得到了一个巨大的数组副本。也许还有更好的方法?
【问题讨论】:
标签: python arrays numpy pandas scikit-learn