我正在寻找为我的数据框中的每个列找到唯一值。 (独特的价值观为整个数据帧)为每列找到唯一值
Col1 Col2 Col3
1 A A B
2 C A B
3 B B F
Col1中有C作为一个独特的价值,col2的现在没有和COL3有F.
任何天才的想法?谢谢 !
我正在寻找为我的数据框中的每个列找到唯一值。 (独特的价值观为整个数据帧)为每列找到唯一值
Col1 Col2 Col3
1 A A B
2 C A B
3 B B F
Col1中有C作为一个独特的价值,col2的现在没有和COL3有F.
任何天才的想法?谢谢 !
可以使用stack
为Series
,然后drop_duplicates
- keep=False
全部删除,由reset_index
和最后reindex
除去第一级:以上
df = df.stack()
.drop_duplicates(keep=False)
.reset_index(level=0, drop=True)
.reindex(index=df.columns)
print (df)
Col1 C
Col2 NaN
Col3 F
dtype: object
解决方案工作很好,如果每列仅包括一个独特的价值。
我试图创造更广泛的解决方案:
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的的.unique()
像这样:
>>> np.unique(df[['Col1', 'Col2', 'Col3']])
['A' 'B' 'C' 'F']
您还可以获得特定列的唯一值,例如Col3
:
>>> df.Col3.unique()
['B' 'F']
您是否优先考虑效率或代码优雅?你的DataFrame有多大? – ntg