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

Pandas按FreightTypeID分组计算useAll字段的实现方法

需求说明

给定输入数据表,需按FreightTypeID维度分组,生成名为useAll的字段,取值规则为:若对应分组下Order列不存在空值则useAll为1,否则为0,最终返回每个FreightTypeID对应取值的结果表。

输入表预览
FreightID  FreightTypeID  Order
0          1              1    1.0
1          2              1    3.0
2          3              1    NaN
3          4              2    1.0
4          5              2    2.0
5          6              2    3.0
6          7              3    NaN
7          8              3    NaN
8          9              3    NaN
测试数据构造代码
import pandas as pd
solution_dic = {"FreightID": [1,2,3,4,5,6,7,8,9], "FreightTypeID": [1,1,1,2,2,2,3,3,3], "Order": [1,3,None,1,2,3,None,None,None]}
df=pd.DataFrame(solution_dic)
预期输出结果
FreightTypeID  UseAll
0              1       0
1              2       1
2              3       0
实现方法

直接通过pandas分组聚合即可完成需求,核心代码如下:

# 按FreightTypeID分组计算UseAll
result = df.groupby('FreightTypeID', as_index=False).agg(
    UseAll=('Order', lambda col: 1 if col.notna().all() else 0)
)

代码逻辑说明:

  • 调用groupby按FreightTypeID字段分组,传入as_index=False保证分组字段保留为普通列,不会成为结果表的索引
  • 聚合时针对Order列做判断:col.notna().all()用来校验当前分组下Order列的所有值是否都非空,满足条件返回1,否则返回0,聚合结果列命名为UseAll
  • 运行后得到的result和预期输出完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 00:48:24