【发布时间】:2020-02-18 02:24:16
【问题描述】:
我想使用条件语句根据 id 和优先顺序创建标志 -
数据框 -
df=pd.DataFrame({'id':[1,1,1,1,2,3,3,3],
'var':['Apple','Banana','Orange','Mango', 'Mango', 'Banana','Orange','Mango'],
'flag':[1,1,1,1,1,1,1,1]})
优先顺序 - 苹果 > 香蕉 > 橙子
条件-
1 - 如果 Apple、Banana 和 Mango 出现在 id 中,则 Banana 和 Ornage 的标志变为 0,对 Mango 没有影响,它将为 1。
2 - 如果存在香蕉和橙子,则橙子的标志将变为 0
输出 -
df=pd.DataFrame({'id':[1,1,1,1,2,3,3,3],
'var':['Apple','Banana','Orange','Mango', 'Mango', 'Banana','Orange','Mango'],
'flag':[1,0,0,1,1,1,0,1]})
方法——
我尝试过对数据进行分组,并考虑通过定义条件列表来执行交集。
我相信我把它弄复杂了,而且做错了。请指导。
group_test = df.groupby(['id'],as_index=False).var.agg(lambda x: x.unique().tolist())
list_1 = ['Apple','Banana','Orange']
list_2 = ['Banana', 'Orange']
【问题讨论】:
-
所以“Mango”应该单独留下吗?
-
这是一个样本数据,我有一个包含更多水果的数据集。
-
好的。我之所以问,是因为您的
group_test根本不包含“芒果”,但它在数据中并出现在组中 -
是的,我选择了不好的例子,很抱歉造成混乱。