Pandas DataFrame指定索引位置插入替换值的可行性及写法咨询
问题解答
核心结论
- 你写的
test.iloc[2:1] = 22无法实现需求:pandas的切片规则是左闭右开,起始位置2大于结束位置1的情况下,得到的是空切片,不会修改任何元素。 - 替换指定位置/指定条件的元素不需要用append方法,append仅用于新增行,和修改现有元素的场景完全不匹配。
- 可以通过定义变量的方式完成赋值操作,以下是可直接运行的实现方案:
实现方案
前置准备
首先定义你需要的赋值变量:
val = 22
方案1:已知要修改的行索引为2(即第三行),直接指定位置修改
如果你明确要修改行号为2的Deaths列元素,两种常用写法:
用loc方法(更直观,按标签索引)
test.loc[2, 'Deaths'] = val
用iloc方法(按位置索引)
需要先获取Deaths列对应的位置序号,兼容性更强:
test.iloc[2, test.columns.get_loc('Deaths')] = val
方案2:不知道行索引,仅要替换所有Deaths列值为44的元素
如果不确定目标元素的行号,只知道要把Deaths列等于44的所有元素替换为目标值,用布尔索引实现:
test.loc[test['Deaths'] == 44, 'Deaths'] = val
修改后结果验证
执行上述任意一种正确写法后,输出test的结果如下:
| Area | Deaths | Year | |
|---|---|---|---|
| 0 | Tipperary | 11 | 2007 |
| 1 | Tipperary | 33 | 2007 |
| 2 | Cork | 22 | 2007 |
| 3 | Dublin | 55 | 2008 |
内容的提问来源于stack exchange,提问作者user16805952
相关产品推荐
相关产品推荐

