如何用Pandas内置函数按规则为DataFrame生成C列分组?
使用Pandas内置函数生成目标C列的解决方案
可以通过Pandas的groupby结合transform方法实现需求,以下是具体步骤和代码示例:
核心逻辑
针对A列的每个分组:
- 若分组内B列包含多个不同值,C列统一取该分组下B列的首个值;
- 若分组内B列值全部相同,C列直接复制B列对应值。
代码实现
1. 准备示例数据
import pandas as pd # 模拟图片中的数据结构 df = pd.DataFrame({ 'A': ['X', 'X', 'Y', 'Y', 'Z', 'Z'], 'B': ['B1', 'B2', 'B3', 'B3', 'B4', 'B5'] })
2. 生成C列
# 利用分组变换实现规则 df['C'] = df.groupby('A')['B'].transform( lambda x: x.iloc[0] if x.nunique() > 1 else x )
3. 查看结果
运行后输出的DataFrame如下:
A B C 0 X B1 B1 1 X B2 B1 2 Y B3 B3 3 Y B3 B3 4 Z B4 B4 5 Z B5 B4
代码说明
groupby('A')['B']:按A列分组,聚焦每个分组下的B列数据;transform:将分组处理后的结果映射回原DataFrame,保证行数与原数据一致;x.nunique():统计分组内B列的唯一值数量,判断是否存在多分组情况;x.iloc[0]:当存在多分组时,取该分组下B列的第一个值作为C列统一值。
内容的提问来源于stack exchange,提问作者cyntha
相关产品推荐
相关产品推荐

