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

如何在pandas中按group列分组并基于其他列值创建新列

实现方法

首先需要确保你的dfA中country列的"Nan"已经被识别为pandas的空值(如果是字符串"Nan"可以先做转换),只需要借助groupby+transform即可快速实现需求,核心逻辑是对分组后的目标列做「存在任意满足条件的值」的判断。

完整代码示例

import pandas as pd

# 若dfA的country列中"Nan"是字符串格式,先转为pandas识别的空值
dfA['country'] = dfA['country'].replace('Nan', pd.NA)

# 新增value_country列:按group分组判断是否存在非空country
dfA['value_country'] = dfA['country'].notna().groupby(dfA['group']).transform('any')

# 新增value_registration列:按group分组判断是否存在True的registration
dfA['value_registration'] = dfA['registration'].groupby(dfA['group']).transform('any')

# 处理后的dfA即为你需要的dfB
dfB = dfA

逻辑说明

  • 对于value_country:先用notna()把country列转为布尔序列,非空值对应True,空值对应False;再按group分组后用transform('any')对每组做逻辑或运算,只要组内有一个True,整组的返回值都是True,完全匹配规则要求。
  • 对于value_registration:列本身就是布尔类型,直接分组后调用transform('any')即可得到组内是否存在任意True的结果。
  • transform方法会返回和原DataFrame长度一致的序列,自动对齐原索引,不需要额外做合并操作。

内容的提问来源于stack exchange,提问作者Dawn.Sahil

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 04:48:01