代码之家  ›  专栏  ›  技术社区  ›  arash

为数据帧中的不同单元格分配多个值

  •  1
  • arash  · 技术社区  · 6 年前

    这可能是一个简单的问题,但我找不到任何简单的方法。设想以下数据帧:

    df = pd.DataFrame(index=range(10), columns=range(5))
    

    以及三个列表,其中包含我要更改的已定义数据帧的索引、列和值:

    idx_list = [1,5,3,7]  # the indices of the cells that I want to change
    col_list = [1,4,3,1]  # the columns of the cells that I want to change
    value_list = [9,8,7,6]  # the final value of whose cells`
    

    我想知道 pandas 这样可以有效地执行以下操作:

    for i in range(len(idx_list)):
        df.loc[idx_list[i], col_list[i]] = value_list[i] 
    
    谢谢。< / P>
    2 回复  |  直到 6 年前
        1
  •  1
  •   BENY    6 年前

    使用 .values

    df.values[idx_list,col_list]=value_list
    df
    Out[205]: 
         0    1    2    3    4
    0  NaN  NaN  NaN  NaN  NaN
    1  NaN    9  NaN  NaN  NaN
    2  NaN  NaN  NaN  NaN  NaN
    3  NaN  NaN  NaN    7  NaN
    4  NaN  NaN  NaN  NaN  NaN
    5  NaN  NaN  NaN  NaN    8
    6  NaN  NaN  NaN  NaN  NaN
    7  NaN    6  NaN  NaN  NaN
    8  NaN  NaN  NaN  NaN  NaN
    9  NaN  NaN  NaN  NaN  NaN
    

    或者另一种效率更低的方法

    updatedf=pd.Series(value_list,index=pd.MultiIndex.from_arrays([idx_list,col_list])).unstack()
    df.update(updatedf)
    
        2
  •  -1
  •   Muthu    6 年前

    尝试df.applymap()函数,您可以使用lambda执行所需的操作。