说我有一个数据框:
this_is_my_dataframe_with_a_long_name
我想找到条件为True
的索引。例如,假设条件是column
等于value
。
我知道我可以在技术上做到:
dataframe_with_a_long_name[dataframe_with_a_long_name['column'] =='A].index
这让我想知道:
以上是最有效方法来检索这些索引吗?请注意,上面的代码创建了True / False值的临时副本,使用此输出索引数据帧,然后检索结果视图的索引。
运行此查询还有更强大的简洁方法吗?例如,idxmin()
允许直接查询索引的最小值(一个方法调用)。在条件为True
的条件下检索索引是否有等价物? e.g:
data_frame_with_a_long_name['column' == 'A'].true_indices()
答案 0 :(得分:5)
在常规熊猫中,这可能是编写它的最佳方式。随着Dataframe变大,使用较新的query方法可能会有一些加速,这通常会更简洁,特别是考虑到更长的数据帧名称。
In [154]: df = pd.DataFrame(np.random.rand(10000000), columns=['a'])
In [155]: %timeit df[df['a'] < .25].index
10 loops, best of 3: 154 ms per loop
In [156]: %timeit df.query('a < .25').index
1 loops, best of 3: 129 ms per loop
编辑:
正如@Jeff所说,如果你只需要索引,那么最快的路径就是:
In [160]: %timeit df.index[df['a'] < .25]
10 loops, best of 3: 81.6 ms per loop