根据列条件提取到一个列表

试图获得相关部件的竞争供应商。要求 – 如果两个供应商提供一个零件,他们将是竞争对手& 它将被映射到供应商的所有相关零件。

#Input Data
list1 = ['A','A','A','D','E','F','G','H','I','J','K','L','M','N','O','Q']
list2 = ['A1','A2','A3','A4','A5','A6','A1','A1','A9','A10','A11','A12','A13','A14','A15','A16']

Input = pd.DataFrame({'Materials' : list1, 'Vendors':list2})
print(Input)

#Output required
list1 = ['A','A','A','D','E','F','G','H','I','J','K','L','M','N','O','Q']
list2 = ['A1','A2','A3','A4','A5','A6','A1','A1','A9','A10','A11','A12','A13','A14','A15','A16']
list3 = ['[A1,A2,A3]','[A1,A2,A3]','[A1,A2,A3]','A4','A5','A6','[A1,A2,A3]','[A1,A2,A3]','A9',
     'A10','A11','A12','A13','A14','A15','A16']
Output = pd.DataFrame({'Materials' : list1, 'Vendors':list2, 'Output':list3})
print(Output)

#Trying to get info of competitor vendors for all related materials
#Code which i am currently trying
df['gt_1'] = df.groupby(Vendor).Material.transform('nunique').explode()

任何建议,请

解决方案:

这应该是工作的。

df = Input.groupby(['Materials'],as_index=False).agg(lambda x: " ".join(x))\
          .rename(columns={'Vendors':'Competitors'})

df = Input.merge(df,how='left').groupby("Vendors")["Competitors"]\
          .agg(lambda x: " ".join(x)).apply(lambda x: set(x.split(" "))).reset_index()

Output = Input.merge(df,how='left')
Output

给TA打赏
共{{data.count}}人
人已打赏
未分类

Gif图片在ionic-5的闪屏中无法使用。

2022-9-9 4:24:17

未分类

如何在Ruby中迭代一个数组的第2个元素?[重复]

2022-9-9 4:24:19

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索