获取布尔索引的选定值的索引

时间:2016-06-13 02:52:41

标签: pandas

考虑以下数据框:

boolIndex = df.dtypes=='object'

我们可以通过

为dtype创建索引
df.select_dtypes(include=['object'])

直接使用

创建子集
build.gradle

作为一项学习练习,我想创建一个数据框,其中包含与boolIndex中前两个(或任意数字)TRUE值对应的列。意思是,我想创建一个数据框,包括dtype'object'的前两列。我试图避免获得所有'对象'列,然后采取前两个。理想情况下,我会有一个与位置相对应的数字索引,我可以选择我想要的那个。

1 个答案:

答案 0 :(得分:0)

您可以在切片前获取前两个对象列:

In [11]: objs = df.dtypes == 'object'

In [12]: objs[objs][:2].index
Out[12]: Int64Index([2, 3], dtype='int64')

In [13]: df.loc[:, objs[objs][:2].index]
Out[13]:
   2  3
0  c  d

虽然我怀疑在大多数用例中性能差异会很小,但在极端情况下它可能会有很小的差异:

In [21]: %timeit objs = df.dtypes == 'object'; df.loc[:, objs[objs][:2].index];
100 loops, best of 3: 5.03 ms per loop

In [22]: %timeit df.select_dtypes(include=['object'])
10 loops, best of 3: 49.3 ms per loop