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:如何计算两列的唯一组合