Python 将多个值分配给数据帧中的不同单元格
这可能是一个简单的问题,但我找不到任何简单的方法。设想以下数据帧:Python 将多个值分配给数据帧中的不同单元格,python,pandas,dataframe,Python,Pandas,Dataframe,这可能是一个简单的问题,但我找不到任何简单的方法。设想以下数据帧: 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 wan
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]
谢谢。尝试df.applymap()函数,您可以使用lambda执行所需操作。尝试df.applymap()函数,您可以使用lambda执行所需操作。使用
.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)
使用
.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)
如果我没有错,从性能的角度来看,lambda和简单循环几乎是相同的。如果我没有错,从性能的角度来看,lambda和简单循环几乎是相同的。简单而快速!根据`%timeit',比简单循环快50倍以上@arash只是需要提到的一个想法。如果需要的话,.values方法等于.iloc。loc等效使用2rd方法。简单快速!根据`%timeit',比简单循环快50倍以上@arash只是需要提到的一个想法。如果需要的话,.values方法等于.iloc。采用2rd法的loc当量。