假设我有以下熊猫数据框:
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