这可能是一个简单的问题,但是我找不到任何简单的方法来做到这一点。想象一下以下数据框:
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]
谢谢。
答案 0 :(得分:1)
使用.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)
答案 1 :(得分:-1)
尝试df.applymap()函数,您可以使用lambda进行所需的操作。