列出Pandas数据框中的唯一值

6za6bjd0  于 2023-06-28  发布在  其他
关注(0)|答案(5)|浏览(131)

我知道

df.name.unique()

将在一列'name'中给予唯一值。
例如:

name    report  year
Coch    Jason   2012
Pima    Molly   2012
Santa   Tina    2013
Mari    Jake    2014
Yuma    Amy     2014

array(['Jason', 'Molly', 'Tina', 'Jake', 'Amy'], dtype=object)

然而,假设我有大约1000列,我想一起看到所有列的唯一值。
我该怎么做?

wfauudbj

wfauudbj1#

使用unique的字典理解:

pd.Series({c: df[c].unique() for c in df})

结果输出:

name      [Coch, Pima, Santa, Mari, Yuma]
report    [Jason, Molly, Tina, Jake, Amy]
year                   [2012, 2013, 2014]
4uqofj5v

4uqofj5v2#

您可以使用set

list(map(set,df.values.T))
Out[978]: 
[{'Coch', 'Mari', 'Pima', 'Santa', 'Yuma'},
 {'Amy', 'Jake', 'Jason', 'Molly', 'Tina'},
 {2012, 2013, 2014}]

投入系列后

pd.Series(list(map(set,df.values.T)),index=df.columns)
Out[980]: 
name      {Santa, Pima, Yuma, Coch, Mari}
report    {Jason, Amy, Jake, Tina, Molly}
year                   {2012, 2013, 2014}
dtype: object
ttp71kqs

ttp71kqs3#

如果你想让你的结果在一个列表中,你可以这样做

[df[col_name].unique() for col_name in df.columns]

输出:

[array(['Coch', 'Pima', 'Santa', 'Mari', 'Yuma'], dtype=object),
 array(['Jason', 'Molly', 'Tina', 'Jake', 'Amy'], dtype=object),
 array([2012, 2013, 2014])]

这将创建一个2D数组列表,其中每一行都是每一列中的值的唯一数组。
如果你想要一个二维列表,你可以修改上面的

[df[i].unique().tolist() for i in df.columns]

输出:

[['Coch', 'Pima', 'Santa', 'Mari', 'Yuma'],
 ['Jason', 'Molly', 'Tina', 'Jake', 'Amy'],
 [2012, 2013, 2014]]
kkih6yb8

kkih6yb84#

我做了以下事情。这会将数据框中所有列的所有唯一值放入一个集合中。

unique_values = set()
for col in df:
    unique_values.update(df[col])
wnrlj8wa

wnrlj8wa5#

创建一个5行的数字问题,并将所有选项作为唯一值,并在下一个后续问题中提取第一个最高和第二个最高数字。

相关问题