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

使用Python Pandas标记同时含同色A、B类商品的交易ID

解决方案

我来帮你搞定这个需求!咱们要标记出那些同时包含category为A和B、且颜色相同的transaction_id对应的所有行,具体步骤如下:

1. 先构造示例数据(方便验证)

首先咱们先把你给出的示例数据转换成Pandas DataFrame:

import pandas as pd

data = {
    'product_id': [234, 349, 213, 490, 245, 249, 294],
    'transaction_id': [54, 54, 46, 46, 87, 87, 87],
    'category': ['A', 'B', 'A', 'A', 'A', 'B', 'A'],
    'color': ['black', 'silver', 'silver', 'black', 'black', 'black', 'silver']
}
df = pd.DataFrame(data)

2. 核心逻辑:标记符合条件的交易-颜色组合

我们可以通过按transaction_id和color分组,然后检查每个分组里是否同时包含'A'和'B'两个category。这里用transform方法可以直接把结果映射回原DataFrame的每一行:

# 分组后检查每组是否同时包含A和B,生成flag列
df['flag'] = df.groupby(['transaction_id', 'color'])['category'].transform(
    lambda x: {'A', 'B'}.issubset(x)
)

3. 验证结果

运行后得到的DataFrame如下:

product_idtransaction_idcategorycolorflag
23454AblackFalse
34954BsilverFalse
21346AsilverFalse
49046AblackFalse
24587AblackTrue
24987BblackTrue
29487AsilverFalse

完全符合你的需求:交易87里的黑色商品(A类和B类)被标记为True,其他行都是False。

补充说明

  • 用{'A', 'B'}.issubset(x)比x.nunique() >=2更严谨,因为它明确检查是否同时包含A和B,避免出现其他category的干扰(如果有的话)。
  • 如果你的数据量很大,这种分组transform的方法效率也很高,不需要额外的合并操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 08:12:45