python 操作excel 实现vlookup功能,解决匹配重复行的问题
时间: 2024-03-14 09:45:10 浏览: 164
当两个表格中存在重复的匹配列时,使用 pandas 中的 merge 方法会出现匹配重复行的问题,可以通过以下方法解决:
1. 将待匹配的列先去重,并添加一个标记列,用于后续匹配时去重。
```python
df1_unique = df1[['ID']].drop_duplicates().reset_index(drop=True)
df1_unique['flag'] = True
df2_unique = df2[['ID']].drop_duplicates().reset_index(drop=True)
df2_unique['flag'] = True
```
2. 对去重后的表格进行 merge 操作。
```python
result = pd.merge(df1_unique, df2_unique, on='ID', how='left')
```
3. 合并后的结果表格中可能会存在重复行,需要根据标记列进行去重。
```python
result = result[result['flag']].drop(columns=['flag']).reset_index(drop=True)
```
完整代码如下:
```python
import pandas as pd
# 读取两个表格
df1 = pd.read_excel('table1.xlsx')
df2 = pd.read_excel('table2.xlsx')
# 将待匹配的列去重并添加标记列
df1_unique = df1[['ID']].drop_duplicates().reset_index(drop=True)
df1_unique['flag'] = True
df2_unique = df2[['ID']].drop_duplicates().reset_index(drop=True)
df2_unique['flag'] = True
# 合并去重后的表格
result = pd.merge(df1_unique, df2_unique, on='ID', how='left')
# 根据标记列去重
result = result[result['flag']].drop(columns=['flag']).reset_index(drop=True)
```
这样就可以解决匹配重复行的问题了。
阅读全文