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

基于Pandas中ID重复值与Collection列表长度设置status列

解决方案

步骤说明

  1. 先计算Collection列中每个列表的长度,用apply(len)比str.len()更可靠——str.len()是针对字符串的,而这里是列表类型,直接调用列表的len方法更准确。
  2. 按ID分组,获取每个分组内列表长度的最大值。
  3. 对比每行的列表长度是否等于对应分组的最大值:相等则status设为1,否则设为0。这种逻辑天然满足需求:无重复的ID分组只有一行,必然等于最大值,所以status为1;重复ID中只有长度最大的行status为1。

完整代码

import pandas as pd

# 构造示例DataFrame
df = pd.DataFrame({
    'Collection': [[{'tom': 'one'}, {'tom': 'two'}], [{'nick': 'one'}], [{'julie': 'one'}]],
    'ID': [10, 10, 14]
})

# 计算Collection列的列表长度
df['col_len'] = df['Collection'].apply(len)

# 按ID分组,获取每个组的最大长度
max_len_per_id = df.groupby('ID')['col_len'].transform('max')

# 设置status列
df['status'] = (df['col_len'] == max_len_per_id).astype(int)

# 可选:删除临时的col_len列
df.drop('col_len', axis=1, inplace=True)

print(df)

运行结果

Collection  ID  status
0  [{'tom': 'one'}, {'tom': 'two'}]  10       1
1                 [{'nick': 'one'}]  10       0
2                [{'julie': 'one'}]  14       1

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 03:10:56