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

如何将DataFrame中Department列转换为独热向量并按Customer聚合

解决方案:将DataFrame的Department列转换为按Customer聚合的独热向量

先明确你的原始数据和目标需求:

原始DataFrame

customer | Department
----------------------
A        | Food
B        | Home
A        | Office
C        | Home
A        | Home
B        | Office

目标输出

customer | Food | Home | Office
-----------------------------------
A        | 1    | 1    | 1
B        | 0    | 1    | 1
C        | 0    | 1    | 0

用Python的Pandas库就能轻松实现这个需求,我一步步给你演示:

  1. 导入Pandas并构建原始DataFrame
    如果已经有现成的DataFrame可以跳过这一步,否则先把数据转换成Pandas格式:
import pandas as pd

# 构建原始数据
raw_data = {
    'customer': ['A', 'B', 'A', 'C', 'A', 'B'],
    'Department': ['Food', 'Home', 'Office', 'Home', 'Home', 'Office']
}
df = pd.DataFrame(raw_data)
  1. 生成独热编码并与原数据合并
    用pd.get_dummies()对Department列做独热编码,然后和customer列合并到一起:
# 生成部门的独热编码,去掉前缀让列名直接是部门名称
department_dummies = pd.get_dummies(df['Department'], prefix='', prefix_sep='')
# 合并customer列和独热编码列
combined_df = pd.concat([df['customer'], department_dummies], axis=1)
  1. 按Customer聚合并转换为整数类型
    按customer分组后取最大值(只要该客户关联过对应部门,结果就是1,没关联过则为0),最后重置索引并把编码列转为整数类型:
# 分组聚合+重置索引,让customer回到列的位置
result_df = combined_df.groupby('customer').max().reset_index()
# 将编码列转为整数类型,符合你要的格式
result_df = result_df.astype({'Food': int, 'Home': int, 'Office': int})
  1. 查看最终结果
    打印result_df就能得到你想要的输出:
print(result_df)

为什么用max()聚合?

因为同一个客户可能多次关联同一个部门(比如客户A两次关联Home),独热编码会生成多个1,取最大值可以确保只要客户出现过该部门,最终值就是1,完全匹配你的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 07:19:59