gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 09:01:00 25 4
gpt4 key购买 nike

假设我有一个数据框:

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. 以上是检索这些索引的最有效方法吗?请注意,上面的代码创建了 True/False 值的临时副本,使用此输出为数据帧编制索引,然后检索结果 View 的索引。

  2. 是否有更简洁的方式来运行此查询?例如,idxmin() 允许直接查询索引的最小值(一个方法调用)。在条件为 True 的情况下,是否有任何等效的检索索引?例如:

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

最佳答案

在普通的 pandas 中,这可能是最好的编写方式。随着 Dataframe 变大,使用较新的 query 可能会有一些加速。方法,通常会更简洁,尤其是给定较长的 Dataframe 名称。

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

关于python - 条件为真的索引。效率和简洁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25432807/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com