pandas多列唯一值

210
df = pd.DataFrame({'Col1': ['Bob', 'Joe', 'Bill', 'Mary', 'Joe'],
                   'Col2': ['Joe', 'Steve', 'Bob', 'Bob', 'Steve'],
                   'Col3': np.random.random(5)})

什么是返回'Col1'和'Col2'的唯一值的最佳方法?

期望输出为

'Bob', 'Joe', 'Bill', 'Mary', 'Steve'

8
参见在pandas数据帧中选择列的唯一值组合并计数相关问题。那里的选定答案使用了df1.groupby(['A','B']).size().reset_index().rename(columns={0:'count'}) - Paul Rougieux
12个回答

0
你可以使用stack函数来合并多列数据,使用drop_duplicates函数来查找唯一值:
df[['Col1', 'Col2']].stack().drop_duplicates().tolist()

输出:

['Bob', 'Joe', 'Steve', 'Bill', 'Mary']

-1
import pandas as pd
df= pd.DataFrame({'col1':["a","a","b","c","c","d"],'col2': 
                ["x","x","y","y","z","w"],'col3':[1,2,2,3,4,2]})
df

输出为

  col1 col2 col3
0   a   x   1
1   a   x   2
2   b   y   2
3   c   y   3
4   c   z   4
5   d   w   2

从所有列中获取唯一值

    a={}
    for i in range(df.shape[1]) :
        j=df.columns[i]
        a[j] = df.iloc[:,i].unique()

   for p,q in a.items():
       print( f"unique value in {p} are {list(q)} ")

输出结果为

    unique value in col1 are ['a', 'b', 'c', 'd'] 
    unique value in col2 are ['x', 'y', 'z', 'w'] 
    unique value in col3 are [1, 2, 3, 4] 

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接