2 回答
TA贡献1817条经验 获得超14个赞
使用GroupBy 根据列进行分组。使用 GroupBy.apply 和 Series.isinC检查两个系列(和) 的公共值,然后可以使用DataFrame.unstack和DataFrame.any进行布尔索引:AB
new_df=df[df.groupby('C').apply(lambda x: x['A'].isin(x['B'])&x['B'].isin(x['A'])).unstack().any()]
print(new_df)
A B C
3 3 7 False
5 5 5 False
7 7 3 False
回应您的评论:
df['A'].isin(df['B'])
0 False
1 False
2 True
3 True
4 True
5 True
6 True
7 True
8 False
9 False
Name: A, dtype: bool
df['A']==df['B']
0 False
1 False
2 False
3 False
4 False
5 True
6 False
7 False
8 False
9 False
dtype: bool
TA贡献1793条经验 获得超6个赞
关键是将数据框合并到自身,将B列与A列匹配:
df = df.merge(df.rename({'B': 'A', 'A': 'AfromB', 'C': 'CfromB'}, axis=1), how='left')
df = df[(df['B'] == df['AfromB']) & (df['C'] == df['CfromB'])].drop(['AfromB', 'CfromB'], axis=1)
添加回答
举报