Python 根据另一列中的类别筛选列中的唯一值
我想过滤掉df1 col1中的唯一值,这些唯一值存在于df1 col2中的所有唯一值中。 解决这个问题的好方法是什么 举例说明问题Python 根据另一列中的类别筛选列中的唯一值,python,pandas,Python,Pandas,我想过滤掉df1 col1中的唯一值,这些唯一值存在于df1 col2中的所有唯一值中。 解决这个问题的好方法是什么 举例说明问题 d = { 'col1': ['alfa','alfa','beta','beta','beta','charlie','delta','delta','echo','foxtrot','foxtrot'], 'col2': ['sweden','norway','norway','sweden','denmark','norway','swe
d = {
'col1': ['alfa','alfa','beta','beta','beta','charlie','delta','delta','echo','foxtrot','foxtrot'],
'col2': ['sweden','norway','norway','sweden','denmark','norway','sweden','norway','denmark','denmark','norway']
}
df = pd.DataFrame(data=d)
print(df)
col1 col2
alfa sweden
alfa norway
beta norway
beta sweden
beta denmark
charlie norway
delta sweden
delta norway
echo denmark
foxtrot denmark
foxtrot norway
通缉结果:
df2
首先创建唯一国家名称的
集合
,按col1将col2值分组到列表中,然后通过比较集合应用布尔掩码:
df = pd.DataFrame(data=d)
unique = set(df["col2"].unique())
grouped = df.groupby("col1")["col2"].apply(list)
x = df.groupby("col1")["col2"].apply(set)==unique
print (grouped[x])
#
col1
beta [norway, sweden, denmark]
非常感谢您提供的解决方案,它解决了我正在处理的问题。有关集团、拆分的澄清,请采用以下方法:
df = pd.DataFrame(data=d)
unique = set(df["col2"].unique())
grouped = df.groupby("col1")["col2"].apply(list)
x = df.groupby("col1")["col2"].apply(set)==unique
print (grouped[x])
#
col1
beta [norway, sweden, denmark]