我有一个这样的dataFrame:
df = pd.DataFrame({'products' : ['a,b,c', 'a,c', 'b,d','a,b,c']})
products
0 a,b,c
1 a,c
2 b,d
3 a,b,c
我还创建了一个字典,将特定产品Map到某个类别:
mydict = {'good':['a'],'bad':['d'],'neutral':['b','c','a']}
我尝试创建一个新列,假设df['quality']
添加字典键(产品类别),如果df['products']
中的任何产品包含在该特定键的值中,那么最终输出应该如下所示:
products quality
0 a,b,c good, neutral
1 a,c good, neutral
2 b,d neutral, bad
3 a,b,c good, neutral
有什么想法吗?我是不是把问题复杂化了?
4条答案
按热度按时间tquggr8v1#
您可以首先生成一个将类别Map到产品的反转字典,例如
a -> [good, neutral]
。然后使用此反转字典将df
中的值拆分为,
、explode
和map
。然后使用groupby
和set
将它们重新聚集到展开列表产品上,最后将它们与,
连接:得到
wtzytmuj2#
我们试试看
6ie5vjzr3#
你应该这样定义mydict:
然后:
退货:
ht4b089n4#
下面是另一种方法:
或(第一部分将当前词典转换为新格式)