如何在Pandas DataFrame列中获取唯一值

时间:2020-02-23 14:42:04  来源:igfitidea点击:

在本教程中,我们将看到如何从Pandas DataFrame中的列中获取唯一值。

有时,我们可能希望从大Pandas DataFrame中的一列获取唯一值。

以下是我们将使用的示例员工数据。

NameAgeDepartment
Rohit26Sales
John21HR
Appy34Sales
Smita47Tech
Neha22HR

使用unique()方法

你可以使用Pandas unique()从Pandas DataFrame中获取唯一值的方法。
这是一个例子。
我们将使用 unique()获得独特价值的方法 Department柱子。

import pandas as pd
emp_df = pd.DataFrame({'Name': ['Rohit','John','Appy','Smita','Neha'], 
                        'Age': [26,21,34,47,22], 
                       'Department':['Sales','HR','Sales','Tech','HR']})
print("-------Original Dataframe-------\n",emp_df)
 
# Get unique values using unique() method
deptUniq = emp_df.Department.unique()
print("-------Unique Department values-------\n",deptUniq)
print(type(deptUniq))

输出:

-------Original Dataframe------
     Name  Age Department
0  Rohit   26      Sales
1   John   21         HR
2   Appy   34      Sales
3  Smita   47       Tech
4   Neha   22         HR
-------Unique Department values------
 ['Sales' 'HR' 'Tech']
<class 'numpy.ndarray'>

正如我们所看到的,我们为部门列获得了唯一的值。
如果我们希望结果为列表,则可以使用Tolist()函数来转换 numpy.ndarray列出。
使用以下更改突出线路:

# Get unique values using unique() method
deptUniqList = emp_df.Department.unique().tolist()
print("-------Unique Department values-------\n",deptUniqList)
print(type(deptUniqList))

输出:

-------Original Dataframe------
     Name  Age Department
0  Rohit   26      Sales
1   John   21         HR
2   Appy   34      Sales
3  Smita   47       Tech
4   Neha   22         HR
-------Unique Department values------
 ['Sales', 'HR', 'Tech']
<class 'list'>

使用drop_duplicates()方法

你也可以使用 drop_duplicates()获取Pandas DataFrame中的列中的唯一值。
虽然与独特的方法相比,这种方法并不明显。

这是一个例子。
我们将使用 drop_duplicates()获得独特价值的方法 Department柱子。

import pandas as pd
emp_df = pd.DataFrame({'Name': ['Rohit','John','Appy','Smita','Neha'], 
                        'Age': [26,21,34,47,22], 
                       'Department':['Sales','HR','Sales','Tech','HR']})
print("-------Original Dataframe-------\n",emp_df)
 
# Get unique values using unique() method
deptUniq = emp_df.Department.drop_duplicates()
print("-------Unique Department values-------\n",deptUniq)
print(type(deptUniq))

输出:

-------Original Dataframe------
     Name  Age Department
0  Rohit   26      Sales
1   John   21         HR
2   Appy   34      Sales
3  Smita   47       Tech
4   Neha   22         HR
-------Unique Department values------
 0    Sales
1       HR
3     Tech
Name: Department, dtype: object
<class 'pandas.core.series.Series'>