📌  相关文章
📜  pandas 合并两个数据框删除重复项 - Python (1)

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

Pandas 合并两个数据框删除重复项 - Python

Pandas是Python的一个数据分析库,可以帮助我们清洗、整理、处理数据。在实际的业务场景中,我们经常需要合并两个数据框并去重,这时候就可以使用Pandas的merge()和drop_duplicates()函数来实现。

1. 合并两个数据框

使用Pandas的merge()函数可以实现数据框的合并。merge()函数有4个必要参数:

  • left: 要合并的左侧数据框
  • right: 要合并的右侧数据框
  • on: 合并的键,通常是相同的列名
  • how: 合并方式,包括'left', 'right', 'outer', 'inner'
import pandas as pd

# 创建两个数据框
df1 = pd.DataFrame({'key': ['A', 'B', 'C', 'D'],
                    'value': [1, 2, 3, 4]})

df2 = pd.DataFrame({'key': ['B', 'D', 'E', 'F'],
                    'value': [5, 6, 7, 8]})

# 合并两个数据框
merged_df = pd.merge(df1, df2, on='key', how='outer')
print(merged_df)

输出结果:

  key  value_x  value_y
0   A      1.0      NaN
1   B      2.0      5.0
2   C      3.0      NaN
3   D      4.0      6.0
4   E      NaN      7.0
5   F      NaN      8.0

在这个例子中,我们合并了两个具有相同列名的数据框,并使用了'outer'方式,即保留两个数据框的所有记录。

2. 删除重复项

使用Pandas的drop_duplicates()函数可以删除数据框中的重复项。drop_duplicates()函数有两个参数:

  • subset: 选择要用来去重的列
  • keep: 保留的重复记录,可选'first', 'last', 'False'
# 删除key列中的重复项
unique_df = merged_df.drop_duplicates(subset=['key'], keep='first')
print(unique_df)

输出结果:

  key  value_x  value_y
0   A      1.0      NaN
1   B      2.0      5.0
2   C      3.0      NaN
3   D      4.0      6.0
4   E      NaN      7.0
5   F      NaN      8.0

在这个例子中,我们选择了'key'列来去重,并保留了第一个重复项。

如果我们选择了所有列进行去重,我们会发现结果完全相同:

# 删除所有列中的重复项
unique_df = merged_df.drop_duplicates()
print(unique_df)

输出结果:

  key  value_x  value_y
0   A      1.0      NaN
1   B      2.0      5.0
2   C      3.0      NaN
3   D      4.0      6.0
4   E      NaN      7.0
5   F      NaN      8.0

在实际的业务场景中,我们可以根据需要选择要去重的列,并选择保留的重复记录。通过Pandas的merge()函数和drop_duplicates()函数的组合使用,我们可以很方便地实现两个数据框的合并和去重。