gpt4 book ai didi

python - 使用具有重复索引值的列表查询 Pandas 数据框并收集重复输出

转载 作者:行者123 更新时间:2023-12-04 09:35:51 28 4
gpt4 key购买 nike

我有一个索引值列表。列表中的值可以重复多次。

index_list = [1,3,4,3,2,20,55,30,45]
我想查询一个 pandas dataframe并提取索引与 index_list 中的值匹配的值
  • 如果多次出现相同的索引,我想多次提取该值。
  • 所选值的顺序必须与 index_list 的顺序匹配。

  • index_list 可能很长(100000)而 df 很小(400 行,2 列)
    我使用的解决方案是基于一个循环:
    all_selected_values = []
    for idx in index_list:
    all_selected_values.append(df.loc[df.index == idx,'selected_column'].values[0])
    这有效,但可能会很慢。
    有没有更有效的方法来做到这一点?
    谢谢!

    最佳答案

    Pandas 的方法是在 loc 中传递索引列表并解析您想要的系列,然后转换为列表:

    all_selected_values2=df.loc[index_list,'selected_column'].tolist()

    示例数据帧大小:(11000,1):
    np.random.seed(1)
    index_list = np.random.randint(0,11000,1000) #1000 values
    df = pd.DataFrame(np.random.randint(0,100,(11000,1)),columns=['selected_column'])

    确认:
    all_selected_values = []
    for idx in index_list:
    all_selected_values.append(df.loc[df.index == idx,'selected_column'].values[0])

    all_selected_values2=df.loc[index_list,'selected_column'].tolist()

    print(all_selected_values == all_selected_values2)
    True
    比较:
    %%timeit
    all_selected_values1 = []
    for idx in index_list:
    all_selected_values.append(df.loc[df.index == idx,'selected_column'].values[0])
    197 ms ± 9.04 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)

    %%timeit
    all_selected_values2=df.loc[index_list,'selected_column'].tolist()
    415 µs ± 29.3 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)

    关于python - 使用具有重复索引值的列表查询 Pandas 数据框并收集重复输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62592799/

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