在单独的列上为具有条件的 iloc 切片赋值?
Assigning value to an iloc slice with condition on a separate column?
我想使用 iloc(而不是 loc)+ 一些基于数据框列之一的条件对我的数据框进行切片,并为该切片中的所有项目分配一个值(这实际上是主数据框的一个子集).
我的简化尝试:
df.iloc[:, 1:21][df['column1'] == 'some_value'] = 1
这是为了获取数据帧的一部分:
- 所有行;
- 第 2 至 20 列;
然后再切片:
- 只有 column1 = some_value.
的行
切片工作正常,但等于 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
我想使用 iloc(而不是 loc)+ 一些基于数据框列之一的条件对我的数据框进行切片,并为该切片中的所有项目分配一个值(这实际上是主数据框的一个子集).
我的简化尝试:
df.iloc[:, 1:21][df['column1'] == 'some_value'] = 1
这是为了获取数据帧的一部分:
- 所有行;
- 第 2 至 20 列;
然后再切片:
- 只有 column1 = some_value. 的行
切片工作正常,但等于 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