考虑以下数据框:
boolIndex = df.dtypes=='object'
我们可以通过
为dtype创建索引df.select_dtypes(include=['object'])
直接使用
创建子集build.gradle
作为一项学习练习,我想创建一个数据框,其中包含与boolIndex中前两个(或任意数字)TRUE值对应的列。意思是,我想创建一个数据框,包括dtype'object'的前两列。我试图避免获得所有'对象'列,然后采取前两个。理想情况下,我会有一个与位置相对应的数字索引,我可以选择我想要的那个。
答案 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