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

基于Pandas按ID和日期识别重复值并生成Indicator列

Pandas实现问卷数据重复回答标识

需求说明

按用户ID和填写日期分组,若同一组内的Value 1或Value 2存在重复值,则该组所有行新增的Indicator列取值为1,否则为0。

实现代码

import pandas as pd

# 构造原始数据(替换为你的实际数据即可)
data = {
    'ID': [12345, 12345, 13459, 13459, 13459, 12345, 12345],
    'Date': ['1.1.2023', '1.1.2023', '2.10.2020', '2.10.2020', '2.10.2020', '4.6.2017', '4.6.2017'],
    'Value 1': [32, 54, 19, 19, 19, 54, 33],
    'Value 2': [21, 43, 58, 85, 34, 22, 33]
}
df = pd.DataFrame(data)

# 定义分组检查重复的函数
def has_duplicates(group):
    val1_has_dup = len(group['Value 1'].unique()) < len(group)
    val2_has_dup = len(group['Value 2'].unique()) < len(group)
    return 1 if val1_has_dup or val2_has_dup else 0

# 生成Indicator列
df['Indicator'] = df.groupby(['ID', 'Date']).transform(has_duplicates)

# 查看结果
print(df)

代码解释

  1. 分组逻辑:通过groupby(['ID', 'Date'])将数据按用户和填写日期分组,确保只检查同一用户同日期下的回答。
  2. 重复判断:在分组内,通过比较列的唯一值数量和组内行数,判断是否存在重复值。只要Value 1或Value 2有重复,就返回1。
  3. 广播赋值:使用transform方法将分组的判断结果应用到组内每一行,保证每个条目都能获得对应的Indicator值。

输出结果

IDDateValue 1Value 2Indicator
123451.1.202332210
123451.1.202354430
134592.10.202019581
134592.10.202019851
134592.10.202019341
123454.6.201754221
123454.6.201733331

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 19:47:54