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

Pandas DataFrame匹配相同Polygon_No和shp替换area列0值方法

Pandas按多列分组替换0值方案

实现逻辑

按Polygon_No、shp两列做分组,取每组内area列的非0值,替换本组内所有为0的area值,兼容分组内无有效非0值的异常场景。

完整实现代码

import pandas as pd

# 构造测试数据,实际使用时替换为你自己的DataFrame读取逻辑即可
df = pd.DataFrame({
    'Polygon_No': [2,2,2,2],
    'shp': [4,4,6,6],
    'Sp.': ['T.a.', 'T.n.', 'B.a.', 'T.a.'],
    'area': [31429, 0, 0, 15714]
})

# 核心替换逻辑
df['area'] = df.groupby(['Polygon_No', 'shp'])['area'].transform(
    lambda group: group.replace(0, group[group != 0].iloc[0]) if (group != 0).any() else group
)

# 输出查看结果
print(df)

运行结果

Polygon_No  shp   Sp.   area
0           2    4  T.a.  31429
1           2    4  T.n.  31429
2           2    6  B.a.  15714
3           2    6  T.a.  15714

扩展说明

如果同一个分组内存在多个非0的area值,可以根据业务需求调整替换取值逻辑:

  • 取分组非0最大值:将group[group != 0].iloc[0]替换为group[group != 0].max()
  • 取分组非0平均值:替换为group[group != 0].mean()
  • 取分组非0求和值:替换为group[group != 0].sum()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 12:15:05