如何在pandas中查找多列中的唯一值
通常,您可能希望找到 pandas DataFrame 中多个列的所有唯一值。幸运的是,使用 pandas unique()函数与ravel()函数结合起来很容易做到这一点:
- unique() :按出现顺序返回唯一值。
- ravel():返回一系列扁平化数据。
例如,假设我们有以下 pandas DataFrame:
import pandas as pd #createDataFrame df = pd.DataFrame({'col1': ['a', 'b', 'c', 'd', 'e'], 'col2': ['a', 'c', 'e', 'f', 'g'], 'col3': [11, 8, 10, 6, 6]}) #view DataFrame print(df) col1 col2 col3 0 aa 11 1 bc 8 2 this 10 3 df 6 4 eg 6
返回唯一值的数组
以下代码展示了如何在col1和col2中查找唯一值:
p.d. unique (df[[' col1 ', ' col2 ']]. values . ravel ()) array(['a', 'b', 'c', 'e', 'd', 'f', 'g'], dtype=object)
从结果中我们可以看到这两列中有7个唯一值: a,b,c,d,e,f,g 。
返回唯一值的 DataFrame
如果你想将这些值作为DataFrame而不是数组返回,可以使用以下代码:
unique = pd. unique (df[[' col1 ', ' col2 ']]. values . ravel ()) p.d. DataFrame (unique) 0 0 a 1b 2 tbsp 3rd 4 d 5f 6g
返回唯一值的数量
如果您只想知道跨多个列的唯一值的数量,可以使用以下代码:
unique = pd. unique (df[[' col1 ', ' col2 ']]. values . ravel ()) len (unique) 7
这告诉我们这两列中有7 个唯一值。