保持结果相同的行或应该包含一些熊猫的行

问题描述

您好,我需要您对行进行排序和删除。

column 1   |  column 2   |  column 3   |result   |
    +-------------+-------------+-------------+-------------+
  1 | 45          | artisan    | class1        |0        |
  2 | 45          | artisan    | class1        |1        |
  3 | 45          | student    | class2        |0        |
  4 | 45          | artisan    | class2        |1        |
  5 | 50          | student    | class2        |1        |
  6 | 50          | artisant   | class1        |0        |
  7 | 50          | student    | class1        |0        |

如果该列的行相同,并且如果使用类,则结果列中的结果不同,则将其保留,否则将其删除。 我想进行分组并放下,但找不到解决方法

  column 1   |  column 2   |  column 3   |result  |
    +-------------+-------------+-------------+-------------+
   1| 45          | artisan    | class1        |0        |
   2| 45          | artisan    | class1        |1        |
   4| 45          | artisan    | class2        |1        |
   5| 50          | student    | class2        |1        |
   7| 50          | student    | class1        |0        |

解决方法

如果要使前两列的每组唯一值数量更大,例如1,请使用GroupBy.transformDataFrameGroupBy.nunique作为掩码,并按boolean indexing进行过滤:

df = df[df.groupby(['column 1','column 2'])['result'].transform('nunique').gt(1)]
print (df)
   column 1 column 2 column 3  result
1        45  artisan   class1       0
2        45  artisan   class1       1
4        45  artisan   class2       1
5        50  student   class2       1
7        50  student   class1       0

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...