Python:分组数据的多个过滤器

标签 python excel pandas

我试图过滤掉下面的列表以仅显示具有相同供应商、相同质量(可以是无限数量的评级)但不同类型(只会是两个不同值)的行项目。

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

相关文章:

excel - 工作表函数中单元格、列和行的自引用

javascript - 如何在laravel中使用javascript将html表格保存为excel文件格式

vba - 打印时如何启用订书机?

python - Pandas - 将 Excel 文件保存回/覆盖现有工作表

python - 值错误 : negative dimensions are not allowed using pandas pivot_table

Python Webkit 使用虚拟帧缓冲区制作网站截图

python - 如何在没有黑色背景的情况下将 png 图像作为 Sprite 上传到 pygame 中?

python - Pandas:根据条件用另一个数据帧值替换数据帧中的值

python - 替换 Pandas 数据框中的点

Python List-comprehension 和多次引用一个对象