如何识别同一年度内同一ID对应哑变量type的变化并生成新分类
解决方法
你可以用Python的pandas库实现这个需求,操作步骤如下:
1. 环境准备
首先确保你已经安装了pandas,如果没安装可以执行以下命令安装:
pip install pandas
2. 完整代码示例
import pandas as pd # 构造示例数据集,你可以替换成读取自己的本地文件,比如pd.read_excel("你的文件路径")或者pd.read_csv("你的文件路径") df = pd.DataFrame({ 'year': [2020, 2020, 2020, 2021, 2021, 2021], 'type': ['y', 'y', 'n', 'y', 'n', 'n'], 'person id': [1, 2, 2, 3, 4, 1] }) # 核心逻辑:按用户ID+年份分组,判断同组内type是否存在变化 df['type'] = df.groupby(['person id', 'year'])['type'].transform( lambda x: 'c' if x.nunique() > 1 else x.iloc[0] ) # 输出查看结果 print(df)
3. 逻辑说明
- 分组时同时指定
person id和year两个维度,保证只会判断同一个用户同一年度的type取值变化,不会处理跨年度的情况 transform方法会保留原数据的行顺序和行数,把分组计算后的结果对应回每一行- 每个分组内用
nunique()统计type的唯一值数量:如果数量大于1说明当年type有变化,整组type都赋值为c;如果只有一个唯一值,就保留原有取值
4. 处理后结果
| year | type | person id |
|---|---|---|
| 2020 | y | 1 |
| 2020 | c | 2 |
| 2020 | c | 2 |
| 2021 | y | 3 |
| 2021 | n | 4 |
| 2021 | n | 1 |
内容的提问来源于stack exchange,提问作者ff97
相关产品推荐
相关产品推荐

