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

如何基于另一DataFrame的取值更新Pandas DataFrame指定位置的数值

原有代码问题排查

  • 嵌套逻辑冗余:重复遍历location列表,三层循环无实际意义,增加报错概率
  • iterrows()返回的是DataFrame行的副本,对row对象的修改不会同步到原winter1,所以代码运行后无更新效果
  • 未对齐索引类型:如果winter1的行索引是字符串格式的数字(比如"2"而非整数2),直接用整数索引查找会触发KeyError

正确实现代码

# 第一步:统一索引和数据类型,避免类型不匹配报错
winter1.index = winter1.index.astype(int)
df_winter_min_error = df_winter_min_error.astype(int)

# 第二步:遍历每个地点,直接修改原DataFrame对应位置的值
for location in winter1.columns:
    # 取出当前地点对应的最小值、最大值位置
    min_hour, max_hour = df_winter_min_error[location].iloc[-2:].values
    # 直接赋值更新
    winter1.loc[min_hour, location] = 1
    winter1.loc[max_hour, location] = 1

逻辑说明

提前统一数据类型和索引格式从根源避免匹配报错,直接操作原DataFrame无需处理副本问题,仅一层循环逻辑清晰,性能也远高于原有三层嵌套循环。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 20:45:05