我很好奇Pandas中是否有一个预先构建的函数来检查组中的所有成员(一列中的因子)在另一列中是否包含相同的值。
即如果我的数据框与下面的数据框相似,则会返回一个空列表。
Col1 Col2
2 A
2 A
0 B
0 B
但是,如果我的数据框是这样显示的(请注意Col1中的1 ):
Col1 Col2
2 A
2 A
0 B
1 B
然后,由于组B在Col1中具有不同的值,因此输出将是包含对象“ B”的列表。
答案 0 :(得分:4)
使用groupby nunique和唯一值索引> 1
a = df.groupby('Col2').Col1.nunique() > 1
a[a].index.tolist()
输出:
['B']
答案 1 :(得分:2)
将DataFrame.duplicated
用作布尔掩码,并将列Col2
转换为list
:
a = df.loc[~df.duplicated(keep=False), 'Col2'].unique().tolist()
print (a)
[]
第二个数据:
a = df.loc[~df.duplicated(keep=False), 'Col2'].unique().tolist()
print (a)
['B']
a = df.drop_duplicates(keep=False)['Col2'].unique().tolist()
print (a)
['B']