Python 查找每列的唯一值

Python 查找每列的唯一值,python,pandas,numpy,dataframe,counter,Python,Pandas,Numpy,Dataframe,Counter,我希望为我的数据框中的每一列找到唯一的值。整个数据帧的唯一值 Col1 Col2 Col3 1 A A B 2 C A B 3 B B F Col1有C作为唯一值,Col2没有,Col3有F 有什么好主意吗?谢谢大家! 您可以使用for Seri

我希望为我的数据框中的每一列找到唯一的值。整个数据帧的唯一值

        Col1         Col2            Col3
1        A             A               B
2        C             A               B
3        B             B               F
Col1有C作为唯一值,Col2没有,Col3有F

有什么好主意吗?谢谢大家!

您可以使用for Series,然后-keep=False全部删除,删除第一级和最后一级:

如果每列只有一个唯一的值,上述解决方案效果很好

我尝试创建更通用的解决方案:

print (df)
  Col1 Col2 Col3
1    A    A    B
2    C    A    X
3    B    B    F

s = df.stack().drop_duplicates(keep=False).reset_index(level=0, drop=True)
print (s)
Col1    C
Col3    X
Col3    F
dtype: object

s = s.groupby(level=0).unique().reindex(index=df.columns)
print (s)
Col1       [C]
Col2       NaN
Col3    [X, F]
dtype: object

我不相信这正是您想要的,但作为有用的信息,您可以使用numpy找到数据帧的唯一值。独特如下:

您还可以获取特定列的唯一值,例如Col3:


您是否优先考虑效率还是代码优雅?你的数据框有多大?很高兴能帮忙,谢谢。我还添加了解决方案,如果每个组有多个唯一的值,而有些列没有唯一的值。
print (df)
  Col1 Col2 Col3
1    A    A    B
2    C    A    X
3    B    B    F

s = df.stack().drop_duplicates(keep=False).reset_index(level=0, drop=True)
print (s)
Col1    C
Col3    X
Col3    F
dtype: object

s = s.groupby(level=0).unique().reindex(index=df.columns)
print (s)
Col1       [C]
Col2       NaN
Col3    [X, F]
dtype: object
>>> np.unique(df[['Col1', 'Col2', 'Col3']])
['A' 'B' 'C' 'F']
>>> df.Col3.unique()
['B' 'F']