gpt4 book ai didi

Python Pandas 条件标记

转载 作者:行者123 更新时间:2023-12-01 01:57:35 25 4
gpt4 key购买 nike

使用 python pandas dataframe df:

product_id |transaction_id | category | color
234 54 A black
349 54 B silver
213 46 A silver
490 46 A black
245 87 A black
249 87 B black
294 87 A silver

我想用相同的颜色标记具有 A 和 B 类别的 transaction_ID。因此,在上述场景中,交易 87 的产品 A 为黑色,产品 B 为黑色。

期望的输出:

product_id |transaction_id | category | color  | flag
234 54 A black
349 54 B silver
213 46 A silver
490 46 A black
245 87 A black X
249 87 B black X
294 87 A silver X

我试图在类别和颜色之间创建一个唯一的键,然后进行分组,但它变得困惑,我仍然必须手动进行操作。一定有更简单的方法。

df['key']=df['category']&df['color']

df['transaction_analysis']= df.groupby('transaction_id').key.transform(lambda x : '&'.join(set(x)))

最佳答案

不确定是否更简单,但肯定更干净。您可以对 transaction_idcategory 进行groupby,使用 unique 查找唯一颜色,然后取消堆叠。

此后,生成标志值的映射并稍后分配给 df

v = (
df.groupby(['transaction_id', 'category'])
.color
.unique()
.unstack(fill_value=set())
)
m = {
k : 'X' if set(x).intersection(y) else '' for k, x, y in zip(v.index, v.A, v.B)
}
df['flag'] = df['transaction_id'].map(m)

df

product_id transaction_id category color flag
0 234 54 A black
1 349 54 B silver
2 213 46 A silver
3 490 46 A black
4 245 87 A black X
5 249 87 B black X
6 294 87 A silver X

关于Python Pandas 条件标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49989537/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com