条件为真的索引。效率和简洁性

2024-04-20 14:15:58 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我有一个数据帧:

this_is_my_dataframe_with_a_long_name

我想找到条件为True的索引。例如,假设条件是column等于value。你知道吗

我知道我可以做到:

dataframe_with_a_long_name[dataframe_with_a_long_name['column'] =='A].index

这让我想知道:

  1. 上述方法是否是检索这些索引最有效的方法?请注意,上面的代码创建真/假值的临时副本,使用此输出索引数据帧,然后检索结果视图的索引。

  2. 有没有更简洁的方法来运行这个查询?例如,idxmin()允许直接查询索引中的最小值(一个方法调用)。在条件为True的情况下检索索引有什么等价的方法吗?e、 g.:

    data_frame_with_a_long_name['column' == 'A'].true_indices()
    

Tags: 数据方法代码nametruedataframeindexis
1条回答
网友
1楼 · 发布于 2024-04-20 14:15:58

对于普通的熊猫来说,这可能是最好的写法。随着数据帧越来越大,使用较新的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

相关问题 更多 >