我正在尝试过滤以下列表,以仅显示具有相同供应商,相同质量(可以是无限数量的评级)但类型(仅两个不同值)的订单项。

例如,我可以使用供应商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

10-02 10:39