如何根据熊猫的多列条件删除行?

时间:2019-06-20 08:19:56

标签: python pandas group-by

假设我有以下熊猫数据框:

df = pd.DataFrame({"#":['a','a','a','a','b','b','b','c','c','d','d'],
              "$":[8,5,7,20,4,6,10,8,8,9,9],
              "C":[0,1,2,3,1,0,2,1,0,1,0]})


#   $   C
0   a   8   0
1   a   5   1
2   a   7   2
3   a   20  3
4   b   4   1
5   b   6   0
6   b   10  2
7   c   8   1
8   c   8   0
9   d   9   1
10  d   9   0

我正在寻找删除“#”中的值在C列中仅具有0或1对应项的行,在这种情况下,请删除具有0的行,并保留具有1的行。 因此,在我的情况下,列C中只有值c和d在C列中只有0和1。因此,我将不得不删除c和d在c中具有0的行并保留1。 我不能对a和b进行相同的操作,因为它们映射到C中0和1以外的其他值。它只能是0和1。

我偶然尝试了多种方法,偶然发现了这个可行的解决方案。

df.groupby(['#','$'], as_index=False)['C'].agg({'C':'max'})

但是,此选项无法使用,因为在我的真实数据集中,我有多个包含空值的列,并且在我的情况下无法进行分组。 因此,我正在寻找其他解决方案。

解决方案数据框如下所示:

    #   $   C
0   a   5   1
1   a   7   2
2   a   8   0
3   a   20  3
4   b   4   1
5   b   6   0
6   b   10  2
7   c   8   1
8   d   9   1

0 个答案:

没有答案