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個贊
關鍵是將數(shù)據框合并到自身,將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)
添加回答
舉報