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

如何对DataFrame按多列执行groupby操作获取其他列对应值

Pandas按多列分组提取对应字段值方案

你的需求可以通过两步实现,适配数千行的DataFrame性能完全足够:

步骤1:预处理数据

先过滤掉name列为空的行,同时对city、zip_code、name三个字段去重,避免同一个分组下出现重复的name值:

import pandas as pd

# 假设你的原始DataFrame名为df
df_clean = df.dropna(subset=['name']).drop_duplicates(subset=['city', 'zip_code', 'name'])

执行完这一步得到的df_clean已经满足「每个city+zip_code组合对应所有唯一name值、每个name单独占一行」的逻辑要求,只是相同的city、zip_code会在每行重复显示。

步骤2:实现分组列合并的展示效果(可选)

如果你需要达到示例中相同city、zip_code仅在分组第一行显示,其余行留空的展示效果,可以追加以下代码:

df_result = df_clean.copy()
# 将重复的分组列值替换为空字符串
df_result[['city', 'zip_code']] = df_result[['city', 'zip_code']].mask(df_result.duplicated(subset=['city', 'zip_code']), '')

其他场景适配

如果你需要每个分组单独占一行,name列存储该分组所有取值的列表,可以直接用分组聚合实现:

df_grouped = df.dropna(subset=['name']).groupby(['city', 'zip_code'], as_index=False)['name'].unique()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 02:36:01