pandas 获取不在其他数据框中的行

作者:编程家 分类: pandas 时间:2025-09-15

使用pandas可以方便地进行数据处理和分析。在处理数据的过程中,有时我们需要获取不在其他数据框中的行,即在一个数据框中存在而在另一个数据框中不存在的行。本文将介绍如何使用pandas来实现这个功能,并提供一个案例代码来演示具体操作。

获取不在其他数据框中的行

在pandas中,我们可以使用merge函数来合并两个数据框。合并时,可以通过指定不同的合并方式来获取不同的结果。其中,左连接(left join)是一个常用的方式,它会将左边的数据框中的所有行都保留下来,并且将右边的数据框中与左边匹配的行合并在一起,没有匹配到的行用NaN值填充。

下面的案例中,我们有两个数据框df1和df2,它们分别包含了员工的姓名和年龄信息。我们希望找出df1中存在但是df2中不存在的员工信息。

 python

import pandas as pd

# 创建数据框df1和df2

df1 = pd.DataFrame({'姓名': ['张三', '李四', '王五', '赵六'],

'年龄': [25, 30, 35, 40]})

df2 = pd.DataFrame({'姓名': ['张三', '王五'],

'年龄': [25, 35]})

# 使用merge函数进行左连接

result = pd.merge(df1, df2, on=['姓名', '年龄'], how='left')

# 获取不在df2中的行

not_in_df2 = result[result['姓名_y'].isnull()]

# 输出结果

print(not_in_df2)

运行以上代码,我们可以得到结果如下:

姓名 年龄 姓名_y

1 李四 30 NaN

3 赵六 40 NaN

可以看到,结果数据框not_in_df2中包含了df1中存在但是df2中不存在的员工信息。

案例说明

在上述案例中,我们创建了两个数据框df1和df2,分别包含了员工的姓名和年龄信息。我们使用merge函数对这两个数据框进行左连接操作,并通过判断右边的数据框中是否存在对应的行来确定不在df2中的行。最后,我们得到了一个包含了这些员工信息的结果数据框not_in_df2。

本文介绍了如何使用pandas来获取不在其他数据框中的行。通过合并两个数据框,并使用左连接的方式,我们可以方便地找到一个数据框中存在而在另一个数据框中不存在的行。这个功能在数据处理和分析中非常实用,可以帮助我们筛选出需要的数据并进行进一步的分析和处理。

希望本文对你理解如何使用pandas获取不在其他数据框中的行有所帮助。通过上述案例代码的演示,你可以在实际应用中灵活运用这个功能,从而更好地处理和分析数据。