2 回答
TA贡献1804条经验 获得超7个赞
你可以找到集差
product = [ '70', '7A', '80', '8A']
df.groupby('Supplier').Product.apply(lambda x: set(product).difference(set(x)))
Supplier
CX-01 {80, 8A}
GG-10 {}
GX-05 {7A, 8A}
TA贡献2037条经验 获得超6个赞
尝试使用crosstab,频率显示为 0 表示丢失,然后我们可以使用dot将它们组合到单元格中
s=pd.crosstab(df.Supplier,df.Product)
s.eq(0).dot(s.columns+',').str[:-1]
Out[669]:
Supplier
CX-01 80,8A
GG-10 # blank here means nothing missing
GX-05 7A,8A
dtype: object
更新:更新原因见OP评论
s=pd.crosstab([df.Location ,df.Supplier],df.Product)
s.eq(0).dot(s.columns+',').str[:-1] # here need to assign it back
s=s.eq(0).dot(s.columns+',').str[:-1] # adding this line
s
Out[671]:
Location Supplier
NY GG-10
TN CX-01 80,8A
TX GX-05 7A,8A
dtype: object
添加回答
举报