Python 根据条件选择两个不同列组合上的所有重复项
我的数据框架如下所示:Python 根据条件选择两个不同列组合上的所有重复项,python,pandas,dataframe,Python,Pandas,Dataframe,我的数据框架如下所示: A_key t_num r_num o_st 292 A1 16 TS Q 812 A1 16 TS Q 173 A5 15 TT Q 955 A7 19 TQ Q 804 A7 17 TR Q 49 A7 18 T
A_key t_num r_num o_st
292 A1 16 TS Q
812 A1 16 TS Q
173 A5 15 TT Q
955 A7 19 TQ Q
804 A7 17 TR Q
49 A7 18 TQ Q
668 A1 28 None P
788 A4 88 None P
693 A7 17 TS Q
781 A1 22 None P
我想选择所有不同的行作为o_st='p'的_键和t_num的唯一组合,并选择所有不同的行作为o_st='Q'的_键和r_num的唯一组合,以进入一个新的数据帧。感谢您的回复
预期的df如下所示
A_key t_num r_num o_st
292 A1 16 TS Q
173 A5 15 TT Q
955 A7 19 TQ Q
804 A7 17 TR Q
668 A1 28 None P
788 A4 88 None P
693 A7 17 TS Q
781 A1 22 None P
其中
+删除重复项
您有两个不同的子集,需要根据第三列的值检查其唯一性。我没有两次调用
drop\u duplicates
,而是在一次调用drop\u duplicates
之前创建了一个包含正确子集值的掩码。您关心在最终数据帧中维护的顺序吗?@user3483203-不,只要我拥有所有的数据顺序就行了
df['key'] = df['t_num'].where(df['o_st'].eq('P'), df['r_num'])
df.drop_duplicates(subset=['A_key', 'key']).drop('key', 1)
A_key t_num r_num o_st
292 A1 16 TS Q
173 A5 15 TT Q
955 A7 19 TQ Q
804 A7 17 TR Q
668 A1 28 None P
788 A4 88 None P
693 A7 17 TS Q
781 A1 22 None P