根据条件删除一些重复行
Drop some of duplicate rows based on condition
我有一个这样的数据框。
ID,group,event
A,0,0
A,1,0
B,0,1
B,1,1
C,0,1
C,1,0
D,0,0
D,1,1
E,0,0
F,0,1
我想删除一些基于 'ID' 和条件的重复行:
如果 group=0 且 event=1,则删除 group=1 中的重复行
否则不要删除重复项
所以想要的数据框是这样的
ID,group,event
A,0,0
A,1,0
B,0,1
C,0,1
D,0,0
D,1,1
E,0,0
F,0,1
如果 ID
也存在 group=0
和 event=1
:
,则需要从预期输出中删除 group=1
#test first condition
m0 = df['group'].eq(1)
#get groups if at least one `group=0` and `event=1`
m1 = df['ID'].isin(df.loc[df['group'].eq(0) & df['event'].eq(1), 'ID'])
#filter out this rows
df = df[~m0 | ~m1]
#alternative solution
#df = df[~(m0 & m1)]
print (df)
ID group event
0 A 0 0
1 A 1 0
2 B 0 1
4 C 0 1
6 D 0 0
7 D 1 1
8 E 0 0
9 F 0 1
我有一个这样的数据框。
ID,group,event
A,0,0
A,1,0
B,0,1
B,1,1
C,0,1
C,1,0
D,0,0
D,1,1
E,0,0
F,0,1
我想删除一些基于 'ID' 和条件的重复行: 如果 group=0 且 event=1,则删除 group=1 中的重复行 否则不要删除重复项
所以想要的数据框是这样的
ID,group,event
A,0,0
A,1,0
B,0,1
C,0,1
D,0,0
D,1,1
E,0,0
F,0,1
如果 ID
也存在 group=0
和 event=1
:
group=1
#test first condition
m0 = df['group'].eq(1)
#get groups if at least one `group=0` and `event=1`
m1 = df['ID'].isin(df.loc[df['group'].eq(0) & df['event'].eq(1), 'ID'])
#filter out this rows
df = df[~m0 | ~m1]
#alternative solution
#df = df[~(m0 & m1)]
print (df)
ID group event
0 A 0 0
1 A 1 0
2 B 0 1
4 C 0 1
6 D 0 0
7 D 1 1
8 E 0 0
9 F 0 1