问题描述
您好,我需要您对行进行排序和删除。
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.transform
和DataFrameGroupBy.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