遍历字典table_dic, 取字典里面的每一个dataframe , 与dataframe B表对比,如果该表中的字段在B中不存在,则添加到table C中
时间: 2024-09-28 08:05:41 浏览: 41
要遍历字典`table_dic`,并将字典中的每个DataFrame与DataFrame B进行比较,并在B中缺失的字段添加到table C中,你可以采用如下的Python代码:
```python
from pandas import DataFrame
# 假设table_B是你已有的DataFrame
table_B = ... # 请填充实际的DataFrame内容
# 创建一个空的DataFrame用于存储结果,即table_C
table_C = DataFrame()
# 遍历table_dic中的所有DataFrame
for table_name, df_temp in table_dic.items():
# 判断df_temp中的字段是否全部在table_B中
fields_in_temp = set(df_temp.columns)
fields_in_B = set(table_B.columns)
# 获取只在df_temp中存在的字段
missing_fields = fields_in_temp - fields_in_B
# 如果有缺失字段,将它们添加到table_C
if missing_fields:
for field in missing_fields:
table_C[field] = None # 初始化列值为None或其他默认值
table_C = table_C.merge(df_temp, how='left', on=[field for field in missing_fields]) # 根据缺失字段合并
# 如果你想保留原始表名作为列名,可以这样做:
table_C = table_C.rename_axis(index=None, columns=lambda x: f"{table_name}_{x}" if x not in table_B.columns else x)
# 保存最终结果table_C
table_C.to_csv('table_C.csv') # 或者适合你数据持久化的方式,如数据库、Excel等
```
这段代码首先检查`table_B`和`df_temp`的列集合差异,找出`df_temp`特有的列。然后对这些新列创建一个空的DataFrame `table_C`,并将`df_temp`中的数据通过左连接合并到`table_C`。如果在合并过程中遇到列名冲突,使用原表名前缀以区分。
阅读全文