Pandas 按行查找第一个 nan 值并返回列名

作者:编程家 分类: pandas 时间:2025-06-27

Pandas 是一个强大的数据处理和分析工具,经常被用于处理和分析大型数据集。在数据清洗过程中,我们经常需要查找缺失值并进行相应的处理。本文将介绍如何使用 Pandas 在数据框中按行查找第一个缺失值,并返回该缺失值所在的列名。

案例代码

首先,我们需要导入 Pandas 库并创建一个包含缺失值的数据框。下面是一个简单的示例代码:

python

import pandas as pd

import numpy as np

# 创建包含缺失值的数据框

data = {'A': [1, 2, np.nan, 4],

'B': [5, np.nan, 7, 8],

'C': [9, 10, 11, np.nan]}

df = pd.DataFrame(data)

数据框 `df` 包含了三列(A、B、C),其中有缺失值。接下来,我们将使用 Pandas 的 `apply` 函数和自定义函数来按行查找第一个缺失值,并返回该缺失值所在的列名。

python

# 定义自定义函数

def find_first_nan(row):

for col in row.index:

if pd.isnull(row[col]):

return col

return None

# 按行查找第一个缺失值并返回列名

df['First Nan'] = df.apply(find_first_nan, axis=1)

在上述代码中,我们通过 `apply` 函数将自定义函数 `find_first_nan` 应用到数据框的每一行。自定义函数通过遍历每行的索引,并使用 `pd.isnull` 函数检查每个元素是否为缺失值。如果找到了缺失值,就返回该缺失值所在的列名;如果没有找到缺失值,则返回 `None`。最后,我们将返回的列名存储在新的列 `First Nan` 中。

现在,我们可以打印出包含第一个缺失值所在列名的数据框:

python

print(df)

输出结果如下:

A B C First Nan

0 1.0 5.0 9.0 None

1 2.0 NaN 10.0 B

2 NaN 7.0 11.0 A

3 4.0 8.0 NaN C

可以看到,数据框中的每一行都添加了一个新的列 `First Nan`,其中包含了第一个缺失值所在的列名。对于没有缺失值的行,该列显示为 `None`。

按行查找第一个缺失值

在数据处理过程中,我们经常需要快速定位数据框中的缺失值。使用 Pandas 的 `apply` 函数和自定义函数,我们可以按行查找第一个缺失值,并返回该缺失值所在的列名。

在上面的案例代码中,我们首先创建了一个包含缺失值的数据框 `df`。然后,我们定义了自定义函数 `find_first_nan`,该函数用于按行查找缺失值并返回列名。接下来,我们使用 `apply` 函数将自定义函数应用到数据框的每一行,并将返回的列名存储在新的列 `First Nan` 中。

通过以上步骤,我们成功地按行查找了第一个缺失值,并将其所在的列名添加到数据框中。这个方法在数据清洗和处理中非常实用,可以帮助我们更好地理解和处理数据。

本文介绍了使用 Pandas 在数据框中按行查找第一个缺失值,并返回该缺失值所在的列名的方法。我们通过导入 Pandas 库和创建一个包含缺失值的数据框开始了我们的案例。然后,我们使用 `apply` 函数和自定义函数来按行查找第一个缺失值,并将其所在的列名存储在新的列中。最后,我们打印出包含缺失值列名的数据框,以验证我们的结果。

通过本文的案例代码和步骤说明,希望读者能够理解如何在 Pandas 中按行查找第一个缺失值,并将其所在的列名返回。这个方法在数据处理中非常有用,可以帮助我们更好地处理和分析大型数据集。在实际的数据清洗和处理过程中,读者可以根据自己的需求进行相应的修改和扩展。