现有两张表df1和df2,所有列名都相同,但行数不一样,如何用pandas根据名为“合同编号”的列将df1和df2进行匹配, 若df2中有df1没有的数据则把这些数据写入df1底部但不改变df1的列,并打印“df1”已更新,若df2中所有数据df1都有,则打印“df1不用更新”
时间: 2024-05-08 20:16:18 浏览: 30
用pandas按列合并两个文件的实例
可以使用merge函数将df1和df2按照“合同编号”列进行合并,然后根据合并结果判断是否需要更新df1。
代码示例如下:
```python
import pandas as pd
# 生成示例数据
df1 = pd.DataFrame({'合同编号': [1, 2, 3, 4], '金额': [1000, 2000, 3000, 4000]})
df2 = pd.DataFrame({'合同编号': [3, 4, 5], '金额': [3000, 4000, 5000]})
# 按照“合同编号”列进行合并
merged = pd.merge(df1, df2, on='合同编号', how='outer')
if merged.isnull().any().any():
# 如果有空值,说明df2中有df1没有的数据,将这些数据写入df1底部
new_rows = merged[merged['金额_y'].notnull()]
df1 = pd.concat([df1, new_rows], ignore_index=True)
print('df1已更新')
else:
# 如果没有空值,说明df2中所有数据df1都有
print('df1不用更新')
```
阅读全文