现有两张表df1和df2,所有列名都相同,但行数不一样,如何用pandas根据名为“合同编号”的列将df1和df2进行匹配, 若df2中有df1没有的数据则把这些数据写入df1底部,并打印“df1”已更新,若df2中所有数据df1都有,则打印“df1不用更新”
时间: 2024-06-11 17:06:55 浏览: 145
python中pandas.DataFrame对行与列求和及添加新行与列示例
可以使用pandas的merge函数将df1和df2根据“合同编号”列进行合并,然后判断合并后的数据行数是否与df1的行数相等,如果不相等说明df2中有df1没有的数据,需要将这些数据写入df1底部,并打印“df1已更新”,否则打印“df1不用更新”。
具体代码如下:
```
import pandas as pd
# 读取df1和df2
df1 = pd.read_excel('df1.xlsx')
df2 = pd.read_excel('df2.xlsx')
# 根据“合同编号”列进行合并
merged = pd.merge(df1, df2, on='合同编号', how='outer')
if len(merged) != len(df1):
# 将df2中df1没有的数据写入df1底部
new_data = merged[merged['合同编号'].isin(df1['合同编号']) == False]
df1 = pd.concat([df1, new_data], ignore_index=True)
df1.to_excel('df1.xlsx', index=False)
print('df1已更新')
else:
print('df1不用更新')
```
阅读全文