0
我想從給定一些相當複雜的編碼的數據框中刪除重複項。考慮數據幀根據Python中的多個interpendant條件刪除重複項
df = pd.DataFrame({'id' : [1, 1, 1, 1, 2, 2, 2, 3, 3],
'dup' : [1, 2, 2, 2, 3, 4, 4, 5, 5],
'a' : [False, True, False, True, False, True, False, False, False],
'b' : [False, False, True, True, False, False, False, False, False],
'data' : [0, 1, 2, 3, 0, 1, 2, 0, 0]})
a b data dup id
0 False False 0 1 1
1 True False 1 2 1
2 False True 2 2 1
3 True True 3 2 1
4 False False 0 3 2
5 True False 1 4 2
6 False False 2 4 2
7 False False 0 5 3
8 False False 0 5 3
id
指示哪些行屬於在一起並dup
是在其上數據被視爲複製的變量。所以,0到3行屬於一起,1到3行是重複的。和行相若方式4〜6屬於一起,行5和6是重複等
我想根據以下規則,以便移除重複:
- ,如果存在一個行,使得兩個柱
a
AND列b
是True
,保留該行並放棄其餘部分。 - 條件1不會發生,如果存在行,使得其中任何一列
a
或列b
是True
,保留該行並刪除其餘 - 如果沒有1或2情況下,請重複的行之一。哪個並不重要。
將所得幀應該是這樣的
a b data dup id
0 False False 0 1 1
3 True True 3 2 1
4 False False 0 3 2
5 True False 1 4 2
7 False False 0 5 3
關於情況下兩個以上的重複的行服從這樣
a b data dup id
0 False False 0 3 2
1 True False 1 4 2
2 False True 2 4 2
根據真實其中兩個行1和2是相同的規則規則2.根據導致數據框的邏輯,這些情況是不可能的。
不錯!簡短而甜美。謝謝。 – mortysporty