gpt4 book ai didi

python - 如何根据pandas数据框中的非连续索引列表替换值?

转载 作者:行者123 更新时间:2023-12-01 01:47:09 25 4
gpt4 key购买 nike

我一直在寻找一种快速有效的方法来替换 pandas 数据帧给定列中的值,前提是相应的索引属于非连续数字列表。说 non_consecutive_indices_list = [1400, 6571, 14526, 68420, ...] 与 ca. 30k 不同的值。

  1. 我尝试使用 .iloc,但收到错误消息:

    df.iloc[non_consecutive_indices_list, 'column'] = New_Value

ValueError:只能使用[整数、整数切片(包含起始点,排除结束点)、整数列表、 bool 数组]按位置进行索引。

  • 或者,我尝试了以下方法:

    df.iloc[non_consecutive_indices_list].column = New_Value
  • 但这会返回原始数据帧的副本,因此我无法替换原始值。

  • 最后,我尝试使用 for 循环,它可以工作,但是效率非常低,并且需要很长时间才能替换大约 30k 值:

    for i in non_consecutive_indices_list:
    df.loc[i, 'column'] = New_Value
  • 知道如何以最快的方式完成此操作吗?

    最佳答案

    iloc更改为DataFrame.loc功能:

    df = pd.DataFrame({'column':list('abcdefghij')})

    non_consecutive_indices_list = [2,4,1,6]
    df.loc[non_consecutive_indices_list, 'column'] = 'New_Value'
    print (df)
    column
    0 a
    1 New_Value
    2 New_Value
    3 d
    4 New_Value
    5 f
    6 New_Value
    7 h
    8 i
    9 j

    关于python - 如何根据pandas数据框中的非连续索引列表替换值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51185995/

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