You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修正Pandas代码,实现ID列值整体递减1且保留首行?

问题:将DataFrame的ID列值递减1并保留首行数据

原尝试代码:

df['ID'] = df.index
df.loc[df['ID'].astype(int)] -= 1

原DataFrame:

ID  Process ID Name     Time
0   0         NaN  NaN  msecond
1   1     32434.0   X1      1.4
2   2     32434.0   X2      1.3

预期转换结果:

ID  Process ID Name     Time
0  -1         NaN  NaN  msecond
1   0     32434.0   X1      1.4
2   1     32434.0   X2      1.3

原代码问题分析

原代码中df.loc[df['ID'].astype(int)] -= 1是用ID列的值作为行索引选取整行,再对整行所有列执行减1操作,这会误修改Process、Time等其他列,且逻辑上不是仅针对ID列做递减,因此达不到预期效果。

修正方案

只需直接对ID列执行减1操作,无需复杂的loc定位:

方案1:若ID列已存在

df['ID'] = df['ID'] - 1

方案2:若从index生成ID列后直接修改

df['ID'] = df.index - 1  # 一步生成递减后的ID列

执行后即可得到预期结果,且不会修改其他列数据,首行的Process、Name、Time值均会保留。

内容的提问来源于stack exchange,提问作者mahmood

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 09:40:25