我试图过滤掉下面的列表以仅显示具有相同供应商、相同质量(可以是无限数量的评级)但不同类型(只会是两个不同值)的行项目。
例如,我可以使用供应商 ABC A 级的木材或钢材,但无法与供应商 DEF 进行相同的切换(假设木材和钢材具有不同的质量)。所需的输出将是一张表格,仅显示 ABC 的 A 级钢材和木材以及 GHI 的 B 级钢材和木材。
我想出了如何只显示提供木材和钢材的供应商(即消除了 JKL),但无法弄清楚如何进一步过滤以显示具有不同类型但质量相同的供应商。
df.groupby('Supplier').filter(lambda x:x['Type'].nunique()>1)
如有任何帮助,我们将不胜感激!
输入数据:
Supplier Quality Type
0 ABC A Wood
1 ABC B Steel
2 ABC A Steel
3 DEF B Steel
4 DEF A Wood
5 GHI C Wood
6 GHI A Wood
7 GHI A Steel
8 JKL A Wood
9 JKL A Wood
最佳答案
只需按供应商和质量分组:
df.groupby(['Supplier', 'Quality']).filter(lambda x: x['Type'].nunique() > 1)
Supplier Quality Type
0 ABC A Wood
2 ABC A Steel
6 GHI A Wood
7 GHI A Steel
关于Python:分组数据的多个过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53135658/