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

Pandas修改PM2.5列指定行数据时新增行的解决方法

解决Pandas中使用df.at修改数据时新增行的问题

问题根源

你遇到的新增行问题,本质是索引类型不匹配:你的DataFrame行索引是整数类型的0,但你用了字符串'0'去定位行——Pandas会把字符串索引和整数索引当成完全不同的索引值,所以自然就新建了一行而不是修改原有行。

快速修复:修改原有行的正确方式

直接用整数索引来定位第一行就行:

df.at[0, 'PM2.5'] = 10

如果不确定自己的索引类型,可以先跑print(df.index.dtype)验证:如果输出是int64,就用整数索引;如果是object(字符串类型),那用'0'才有效。

手动为18行PM2.5列添加数据的方法

根据你的需求,这里提供几种实用的操作方式:

1. 给连续的18行(比如索引0到17)依次赋值不同值

如果你有一个包含18个数值的列表,可以用循环逐个赋值:

# 示例:替换成你实际需要的18个数值
pm25_values = [10, 12, 15, 8, 20, 17, 9, 13, 11, 14, 16, 7, 19, 22, 25, 18, 21, 23]
for idx in range(18):
    df.at[idx, 'PM2.5'] = pm25_values[idx]

2. 给18行设置同一个固定值

如果这18行的PM2.5值都一样,用切片批量赋值更高效:

# 假设目标是索引0到17的18行,根据你的实际行索引调整范围
df.loc[0:17, 'PM2.5'] = 15

3. 给不连续的特定18行赋值

如果需要修改的18行索引不是连续的,先把目标行索引放进列表,再批量赋值:

# 替换成你需要修改的18个行索引
target_indices = [0, 2, 5, 7, ...]
# 对应每个索引的数值列表,长度要和target_indices一致
values = [10, 12, 15, 8, ...]
df.loc[target_indices, 'PM2.5'] = values

额外提示

如果你的行索引不是从0开始(比如从1开始),记得把代码里的索引值对应调整,比如第一行索引是1的话,修改第一行就用df.at[1, 'PM2.5'] = 10。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 17:12:27