Python – 显示 Pandas 索引中不是 NA 的条目

Python – 显示 Pandas 索引中不是 NA 的条目

在 Pandas 中,索引列常常起到关键的作用。但是,有时候数据中会出现缺失值(NA)的情况,那么我们如何找到不是 NA 的条目呢?本文将介绍几种实现方法,供大家参考。

方法一:通过“notna()”方法

Pandas 中提供了一个非常方便的方法,即“notna()”,用于输出索引中不是 NA 的条目。下面是示例代码:

import pandas as pd

# 创建数据帧
data = {'name': ['Alice', 'Bob', 'Cathy', 'David', 'Eva'],
        'age': [20, 25, 30, 35, 40],
        'gender': ['F', 'M', 'F', 'M', 'F'],
        'salary': [3000, 4000, None, 5000, None]}
df = pd.DataFrame(data)
df = df.set_index('name')  # 将 “name” 列设置为索引列

# 使用 notna() 方法
df_notna = df.loc[df['salary'].notna()]  

# 输出结果
print(df_notna)

执行以上代码后,将会输出如下结果:

       age gender  salary
name                    
Alice   20      F  3000.0
Bob     25      M  4000.0
David   35      M  5000.0

可以看到,输出结果只保留了有工资的员工信息,缺失值被自动过滤掉了。

方法二:通过“dropna()”方法

除了上述提到的方法外,Pandas 中还提供了一个“dropna()”方法,该方法用于删除缺失值(NA)。由于我们只需要保留非缺失值,因此可以将此方法的 thresh 参数设置为 1。下面是示例代码:

import pandas as pd

# 创建数据帧
data = {'name': ['Alice', 'Bob', 'Cathy', 'David', 'Eva'],
        'age': [20, 25, 30, 35, 40],
        'gender': ['F', 'M', 'F', 'M', 'F'],
        'salary': [3000, 4000, None, 5000, None]}
df = pd.DataFrame(data)
df = df.set_index('name')  # 将 “name” 列设置为索引列

# 使用 dropna() 方法
df_dropna = df.dropna(thresh=1, axis=0)

# 输出结果
print(df_dropna)

执行以上代码后,将会输出如下结果:

       age gender  salary
name                    
Alice   20      F  3000.0
Bob     25      M  4000.0
Cathy   30      F     NaN
David   35      M  5000.0
Eva     40      F     NaN

可以看到,输出结果中所有的行都保留了至少一个非缺失值。

方法三:通过条件选择

除了使用上述提到的方法外,我们还可以通过条件选择实现。具体来说,我们可以通过布尔索引选择其中不是 NA 的行。下面是示例代码:

import pandas as pd

# 创建数据帧
data = {'name': ['Alice', 'Bob', 'Cathy', 'David', 'Eva'],
        'age': [20, 25, 30, 35, 40],
        'gender': ['F', 'M', 'F', 'M', 'F'],
        'salary': [3000, 4000, None, 5000, None]}
df = pd.DataFrame(data)
df = df.set_index('name')  # 将 “name” 列设置为索引列

# 使用条件选择
df_sel = df[df['salary'].notna()]

# 输出结果
print(df_sel)

执行以上代码后,将会输出如下结果:

       age gender  salary
name                    
Alice   20      F  3000.0
Bob     25      M  4000.可以看到,通过布尔索引选择了所有不是 NA 的行,与使用“notna()”方法的效果一致。

方法四:通过“fillna()”方法

在某些情况下,我们可能需要将缺失值转换为其它的值。在这种情况下,我们可以使用“fillna()”方法。下面是示例代码:

import pandas as pd

# 创建数据帧
data = {'name': ['Alice', 'Bob', 'Cathy', 'David', 'Eva'],
        'age': [20, 25, 30, 35, 40],
        'gender': ['F', 'M', 'F', 'M', 'F'],
        'salary': [3000, 4000, None, 5000, None]}
df = pd.DataFrame(data)
df = df.set_index('name')  # 将 “name” 列设置为索引列

# 使用 fillna() 方法
df_fillna = df.fillna({'salary': 0})

# 输出结果
print(df_fillna)

执行以上代码后,将会输出如下结果:

       age gender  salary
name                    
Alice   20      F  3000.0
Bob     25      M  4000.0
Cathy   30      F     0.0
David   35      M  5000.0
Eva     40      F     0.0

在上述代码中,我们将缺失值替换为了 0,输出结果中可以看到:Cathy 和 Eva 的工资都被替换为了 0。

结论

本文介绍了通过四种不同的方法实现 Pandas 索引中不是 NA 的条目的查找和处理。具体来说,我们可以通过“notna()”、“dropna()”、条件选择和“fillna()”方法来实现。这些方法各有优劣,大家可以根据不同的需求做出选择。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程