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']