Python 如何使用数组作为长度不同的索引,一次更改数据帧中的多个值?

Python 如何使用数组作为长度不同的索引,一次更改数据帧中的多个值?,python,pandas,numpy,Python,Pandas,Numpy,我想更改pandas dataframe中的一些值,其中指示列大小的索引可能会有所不同 我需要比for循环更快的东西,因为它将在很多行上完成,结果证明速度太慢了 作为一个简单的例子,考虑这个 df = pd.DataFrame(np.zeros((5,5))) 现在,我想把这个数据框中的一些值改为1。例如,如果我想更改前两列的第二行和第五行中的值,但在第四行中我想更改所有值,我希望这样的操作能够起作用: col_indices = np.array([np.arange(2),np.arang

我想更改pandas dataframe中的一些值,其中指示列大小的索引可能会有所不同

我需要比for循环更快的东西,因为它将在很多行上完成,结果证明速度太慢了

作为一个简单的例子,考虑这个

df = pd.DataFrame(np.zeros((5,5)))
现在,我想把这个数据框中的一些值改为1。例如,如果我想更改前两列的第二行和第五行中的值,但在第四行中我想更改所有值,我希望这样的操作能够起作用:

col_indices = np.array([np.arange(2),np.arange(5),np.arange(2)]) 


row_indices = np.array([1,3,4]) 


df.loc(row_indices,col_indices) =1
但是,这不起作用(我怀疑它不起作用,因为您将选择的数据形状与数据帧不一致)

有没有更灵活的索引方法,而不必循环行等

一个只适用于类似范围的阵列(如上所述)的解决方案也适用于我当前的问题——但一般的答案也不错


谢谢你的帮助

这里有一种方法。将列索引定义为要插入
1s
的列数,以及要插入它们的行数:

col_indices = np.array([2,5,2])
row_indices = np.array([1,3,4]) 
arr = df.values
并用于将感兴趣的单元格设置为
1

arr[row_indices] = np.arange(arr.shape[0]) <= col_indices[:,None]

array([[0., 0., 0., 0., 0.],
       [1., 1., 0., 0., 0.],
       [0., 0., 0., 0., 0.],
       [1., 1., 1., 1., 1.],
       [1., 1., 0., 0., 0.]])

arr[row_index]=np.arange(arr.shape[0])谢谢你解决了我的问题!你知道一般情况下的解决方案吗?还是没有?