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

时间:2021-02-12 16:50:19

标签: pandas conditional-statements slice

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

我的简化尝试:

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

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

  • 所有行;
  • 第 2 到 20 列;

然后再切片:

  • 仅列 1 = some_value 的行。

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

<块引用>

正在尝试在来自 DataFrame 的切片副本上设置值。尝试使用 .loc[row_indexer,col_indexer] = value 代替

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

1 个答案:

答案 0 :(得分:1)

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

df.loc[df['column1']=='some_value', df.columns[1:21]] = 1
相关问题