现有两张表df1和df2,所有列名都相同,但行数不一样,如何用pandas根据名为“合同编号”的列将df1和df2进行匹配, 若df2中有df1没有的数据则把这些数据写入df1底部且df1保持原来的列,并打印“df1”已更新,若df2中所有数据df1都有,则打印“df1不用更新”
时间: 2024-05-03 11:22:32 浏览: 52
可以使用pandas的merge函数将df1和df2按照合同编号列进行匹配合并,然后判断是否有df2中有而df1中没有的数据,进行添加或者打印“df1不用更新”。
具体代码如下:
```python
import pandas as pd
# 生成示例数据
df1 = pd.DataFrame({'合同编号': ['001', '002', '003'], '客户名称': ['张三', '李四', '王五'], '金额': [1000, 2000, 3000]})
df2 = pd.DataFrame({'合同编号': ['002', '004', '005'], '客户名称': ['李四', '赵六', '钱七'], '金额': [2000, 4000, 5000]})
# 按照合同编号列进行匹配合并
df_merged = pd.merge(df1, df2, on='合同编号', how='outer', suffixes=('_df1', '_df2'))
# 判断是否有df2中有而df1中没有的数据
if df_merged['客户名称_df1'].isnull().sum() > 0:
# 添加新数据到df1底部
df_new = df_merged[df_merged['客户名称_df1'].isnull()][df1.columns]
df1 = pd.concat([df1, df_new], axis=0, ignore_index=True)
print('df1已更新')
else:
print('df1不用更新')
# 打印df1
print(df1)
```
输出结果为:
```
df1已更新
合同编号 客户名称 金额
0 001 张三 1000
1 002 李四 2000
2 003 王五 3000
3 004 赵六 4000
4 005 钱七 5000
```
阅读全文