📌  相关文章
📜  删除一个表中存在于另一个表 pandas 中的行 - Python (1)

📅  最后修改于: 2023-12-03 15:07:14.387000             🧑  作者: Mango

删除一个表中存在于另一个表 pandas 中的行 - Python

在数据分析和处理中,经常需要删除一个表中存在于另一个表中的行。使用Pandas能够轻松实现这个操作,以下是实现该功能的步骤和代码。

首先,我们需要导入Pandas和numpy库。

import pandas as pd
import numpy as np

然后我们创建两个DataFrame用于演示删除操作,一个是员工信息表,另一个是需要删除的员工信息表。

df_employee = pd.DataFrame({'ID': [101, 102, 103, 104, 105], 
                            'Name': ['John', 'Cathy', 'Lisa', 'Mike', 'Mary'], 
                            'Department': ['IT', 'HR', 'Marketing', 'Sales', 'IT']})

df_delete = pd.DataFrame({'ID': [102, 104, 106], 
                          'Name': ['Cathy', 'Mike', 'Tom'], 
                          'Department': ['HR', 'Sales', 'IT']})

现在我们需要将两张表连接起来,这里使用merge函数。具体使用方法参见Pandas merge

df_merged = pd.merge(df_employee, df_delete, how='outer', indicator=True)

这里使用参数how='outer',将两个DataFrame按照外连接合并。indicator参数用于判断每行数据在哪个DataFrame中,属于left_only就是员工信息表中的数据,需要保留。反之就是要删除的员工信息表中的数据。

接下来,我们根据indicator列的值,对需要删除的行进行过滤。然后使用drop函数删除这些行。具体代码如下:

df_filtered = df_merged[df_merged['_merge']=='left_only']
df_result = df_filtered.drop('_merge', axis=1)

最后我们输出结果即可。这里将结果保存在df_result中,可以使用to_csv函数将结果保存为CSV文件。

print(df_result)

输出结果:

    ID  Name Department
0  101  John         IT
2  103  Lisa  Marketing
4  105  Mary         IT

模块的使用可以通过官方文档或者所学习的教材获得。这篇文章仅提供一种操作的思路。