在单独的列上为具有条件的 iloc 切片赋值?

Assigning value to an iloc slice with condition on a separate column?

我想使用 iloc(而不是 loc)+ 一些基于数据框列之一的条件对我的数据框进行切片,并为该切片中的所有项目分配一个值(这实际上是主数据框的一个子集).

我的简化尝试:

df.iloc[:, 1:21][df['column1'] == 'some_value'] = 1

这是为了获取数据帧的一部分:

然后再切片:

切片工作正常,但等于 1 不起作用。 df 没有任何变化,我收到此警告

A value is trying to be set on a copy of a slice from a DataFrame. Try using .loc[row_indexer,col_indexer] = value instead

如果可能的话,我真的需要使用 iloc 而不是 loc。感觉应该有办法吧?

你可以在SO上搜索错误。简而言之,您应该更新一个 loc/iloc:

df.loc[df['column1']=='some_value', df.columns[1:21]] = 1