如何合并Pandas的Deployment与HPA DataFrame并填充空值
问题
现有两个DataFrame:Deployment和HPA,二者的Deployment-Label与HPA-Label列值大多重合。需要以这两列为依据合并,同时填充两个DataFrame其他列中的空值(涵盖任一标签列存在缺失值的情况)。
目前使用pd.merge时会丢弃两个DataFrame中的非共同行,当前代码如下:
# Merge the two dataframes, using LABEL common col, after renaming df3 = pd.merge(df1, df2, on = 'LABEL') # Write it to a new CSV file df3.to_csv('output/merged.csv')
两个DataFrame的数据如下:
Deployment表
| Deployment-Label | Deployment Table - Other Columns |
|---|---|
| accountdataservice | 1 |
| accountservice-grpc | 2 |
| fmsdataservice | 3 |
| fuelbenchmarkservice-grpc | 4 |
| fueldeviationservice-grpc | 5 |
| httpclientservice | 6 |
| packageservice-grpc | 7 |
| provisioningdataservice | 8 |
| traefik-ingress-ilb | 9 |
| translationservice-grpc | 10 |
HPA表
| HPA-Label | HPA Table - Other Columns |
|---|---|
| accountdataservice | A |
| accountservice-grpc | B |
| fmsdataservice | C |
| fuelbenchmarkservice-grpc | D |
| fueldeviationservice-grpc | E |
| hangfire | F |
| httpclientservice | G |
| packageservice-grpc | H |
| portalservicerest | I |
| provisioningdataservice | J |
| schedularservice-grpc | K |
| translationservice-grpc | L |
解决方案
要保留两个DataFrame的所有行并完成合并,需要使用外连接(outer join),同时先统一标签列名称,再处理空值填充。
步骤说明
- 重命名两个DataFrame的标签列,统一为同一个名称(比如
LABEL),确保合并时匹配正确。 - 调用
pd.merge时指定how='outer',执行外连接会保留两边所有行,不存在的列值自动填充为NaN。 - 根据业务需求填充空值(示例用
'N/A'填充,可按需调整为其他值)。
完整代码
import pandas as pd # 假设df1对应Deployment表,df2对应HPA表 # 统一标签列名称 df1 = df1.rename(columns={'Deployment-Label': 'LABEL'}) df2 = df2.rename(columns={'HPA-Label': 'LABEL'}) # 执行外连接合并 merged_df = pd.merge(df1, df2, on='LABEL', how='outer') # 填充空值,可根据需求修改填充内容 merged_df = merged_df.fillna('N/A') # 保存结果到CSV merged_df.to_csv('output/merged.csv', index=False)
合并后结果示例
| LABEL | Deployment Table - Other Columns | HPA Table - Other Columns |
|---|---|---|
| accountdataservice | 1 | A |
| accountservice-grpc | 2 | B |
| fmsdataservice | 3 | C |
| fuelbenchmarkservice-grpc | 4 | D |
| fueldeviationservice-grpc | 5 | E |
| httpclientservice | 6 | G |
| packageservice-grpc | 7 | H |
| provisioningdataservice | 8 | J |
| traefik-ingress-ilb | 9 | N/A |
| translationservice-grpc | 10 | L |
| hangfire | N/A | F |
| portalservicerest | N/A | I |
| schedularservice-grpc | N/A | K |
内容的提问来源于stack exchange,提问作者RSW
相关产品推荐
相关产品推荐

