Pandas:如何找到唯一值并忽略 nan


您可以定义以下自定义函数来搜索 pandas 的唯一值并忽略 NaN 值:

 def unique_no_nan(x):
    return x. dropna (). single ()

此函数将返回一个 pandas 系列,其中包含除 NaN 值之外的所有唯一值。

以下示例展示了如何使用以下 pandas DataFrame 在不同场景中使用此功能:

 import pandas as pd
import numpy as np

#createDataFrame
df = pd. DataFrame ({' team ': ['Mavs', 'Mavs', 'Mavs', 'Celtics', 'Celtics', 'Celtics'],
                   ' points ': [95, 95, 100, 113, 100, np.nan]})

#view DataFrame
print (df)

      team points
0 Mavs 95.0
1 Mavs 95.0
2 Mavs 100.0
3 Celtics 113.0
4 Celtics 100.0
5 Celtics NaN

示例1:在Pandas列中查找唯一值并忽略NaN值

假设我们使用pandas unique()函数来显示DataFrame的points列中的所有唯一值:

 #display unique values in 'points' column
df[' points ']. single ()

array([ 95., 100., 113., no])

请注意, unique()函数默认在结果中包含nan

但是,假设我们使用自定义的unique_no_nan()函数来显示列中的唯一值:

 #display unique values in 'points' column and ignore NaN
unique_no_nan(df[' points '])

array([ 95., 100., 113.])

我们的函数返回列中的每个唯一值,不包括 NaN。

示例2:在Pandas Groupby中查找唯一值并忽略NaN值

假设我们使用 pandas groupby()agg()函数来显示列中的所有唯一值,并按团队列分组:

 #display unique values in 'points' column grouped by team
df. groupby (' team ')[' points ']. agg ([' single '])

	unique
team	
Celtics [113.0, 100.0, nah]
Mavs [95.0, 100.0]

请注意, unique()函数默认在结果中包含nan

但是,假设我们使用自定义的unique_no_nan()函数来显示列中的唯一值,并按团队列分组:

 #display unique values in 'points' column grouped by team and ignore NaN
df. groupby (' team ')[' points ']. apply ( lambda x: unique_no_nan(x))

team
Celtics [113.0, 100.0]
Mavs [95.0, 100.0]
Name: points, dtype: object

我们的函数返回每个团队得分列中的每个唯一值,不包括 NaN 值。

其他资源

以下教程解释了如何在 pandas 中执行其他常见功能:

Pandas:如何在 DataFrame 中选择单行
Pandas:如何从索引列获取唯一值
Pandas:如何计算两列的唯一组合

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注