查找每个组在另一列中的特定值,如果该组中不存在,则删除该组



我在从数据框架中删除一些记录时遇到了麻烦。如果我对某个列进行分组,并在另一列中检查该列组中每个组是否在另一列中有任何特定值,如果该特定值不存在,则从第一列(我们之前应用了group的列)中删除整个组。我的数据如下:

tbody> <<tr>沙特阿拉伯巴基斯坦印度瑞士尼日利亚沙特阿拉伯英国巴基斯坦阿富汗伊拉克伊朗美国瑞士印度
search_value_per_group Column_to_Be_Grouped
巴基斯坦
Irshad
阿伊莎
阿伊莎
阿伊莎
佐汉
佐汉
佐汉
佐汉
佐汉
荷兰Irshad
Irshad
Irshad

获取所有匹配的组并通过boolean indexingSeries.isin进行筛选:

groups = df.loc[df['search_value_per_group'].eq('Pakistan'),'Column_to_Be_Grouped']
df1 = df[df['Column_to_Be_Grouped'].isin(groups)]
print (df1)
search_value_per_group Column_to_Be_Grouped
0                Pakistan                Ehsan
2                Pakistan               Ayesha
3                   India                Ehsan
4             Switzerland                Ehsan
5                 Nigeria                Ehsan
6            Saudi Arabia               Ayesha
7                      UK               Ayesha
8                Pakistan                Zohan
9             Afghanistan                Zohan
10                   Iraq                Zohan
11                   Iran                Zohan
12                    USA                Zohan

您可以使用GroupBy.transform('any')生成布尔系列布尔索引:

out = df[df['search_value_per_group'].eq('Pakistan')
.groupby(df['Column_to_Be_Grouped']).transform('any')]

输出:

search_value_per_group Column_to_Be_Grouped
0                Pakistan                Ehsan
2                Pakistan               Ayesha
3                   India                Ehsan
4             Switzerland                Ehsan
5                 Nigeria                Ehsan
6            Saudi Arabia               Ayesha
7                      UK               Ayesha
8                Pakistan                Zohan
9             Afghanistan                Zohan
10                   Iraq                Zohan
11                   Iran                Zohan
12                    USA                Zohan

最新更新