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

如何基于DataFrame两列组合值查询对应列的关联取值

解决方案

要实现你想要的分组聚合并生成指定格式的DataFrame,用pandas的分组(groupby)和聚合(agg)功能就能轻松完成,以下是完整的代码示例和步骤说明:

步骤1:构造示例DataFrame

首先我们先还原你给出的测试数据:

import pandas as pd

# 构造示例数据
data = {
    'variable1': ['a', 'b', 'c', 'e', 'f', 'g'],
    'variable2': [1, 2, 1, 2, 2, 3],
    'variable3': ['w1', 'w2', 'w1', 'w2', 'w2', 'w3']
}
df = pd.DataFrame(data)

步骤2:分组聚合并格式化输出

接下来按variable2和variable3的组合分组,将每组的variable1值合并为空格分隔的字符串,同时把分组组合格式化为(值1,值2)的样式:

# 分组聚合:按variable2和variable3分组,合并variable1为空格分隔的字符串
grouped = df.groupby(['variable2', 'variable3'])['variable1'].agg(' '.join).reset_index()

# 生成variable2+variable3列,格式化为(值,值)的字符串
grouped['variable2+variable3'] = grouped.apply(lambda row: f"({row['variable2']},{row['variable3']})", axis=1)

# 调整列顺序并保留需要的列
result_df = grouped[['variable2+variable3', 'variable1']].rename(columns={'variable1': 'variable1_Values'})

print(result_df)

运行这段代码后,输出的结果就是你期望的格式:

variable2+variable3 variable1_Values
0             (1,w1)              a c
1             (2,w2)            b e f
2             (3,w3)                g

关键说明

  • groupby(['variable2', 'variable3']):指定按两个变量的组合作为分组依据
  • agg(' '.join):将每个分组内的variable1值用空格连接成一个字符串
  • apply(lambda row: ...):把每行的variable2和variable3值拼接成你需要的括号格式字符串
  • 最后调整列顺序并重命名,得到目标结构的DataFrame

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 16:24:11