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

如何在PySpark/Pandas中以Year列为依据修改列值并按ID聚合

实现方法

以下是用Pandas完成需求的具体步骤:

  1. 为每行对应年份的m列赋值1
    利用year列的值拼接出目标列名,直接定位赋值:
import pandas as pd

# 构造示例DataFrame
data = {
    'a': ['hello']*4,
    'id': [1,1,2,2],
    'year': [2001,2015,2002,2015],
    'm2000': [0]*4,
    'm2001': [0]*4,
    'm2002': [0]*4,
    'm2015': [0]*4
}
df = pd.DataFrame(data)

# 核心:根据year列匹配对应mYYYY列并设为1
df.loc[df.index, 'm' + df['year'].astype(str)] = 1
  1. 按id分组聚合
    对分组后的m开头列取最大值(只要该id下有过1,结果就保留1),a列取任意相同值即可:
# 分组聚合,重置索引恢复结构
result = df.groupby(['id', 'a']).max().reset_index()
# 调整列顺序(可选,和示例输出一致)
result = result[['a', 'id'] + [col for col in df.columns if col.startswith('m')]]

运行后得到的result就是你需要的最终结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 02:01:12