如何从现有数据集中提取唯一节点及对应属性值
实现方案
实现思路
- 分别提取Source、Target两侧的节点属性,统一列名
- 给Target节点补充空的Label_S字段,对齐表结构
- 合并两张表后按节点去重,优先保留Source侧的完整属性记录
完整代码
import pandas as pd # 如pandas版本较低不支持pd.NA,可导入numpy用np.nan替代 # 提取Source侧节点属性 source_df = df[['Source', 'Label_S', 'Prop_1', 'Mer_1']].rename(columns={ 'Source': 'Node', 'Prop_1': 'Property', 'Mer_1': 'Merchandising' }).drop_duplicates(subset='Node', keep='first') # 提取Target侧节点属性 target_df = df[['Target', 'Prop_2', 'Mer_2']].rename(columns={ 'Target': 'Node', 'Prop_2': 'Property', 'Mer_2': 'Merchandising' }).drop_duplicates(subset='Node', keep='first') # Target节点无Label_S属性,补空值 target_df['Label_S'] = pd.NA # 合并表并按节点去重,优先保留Source侧带Label_S的记录 result = pd.concat([source_df, target_df], ignore_index=True)\ .drop_duplicates(subset='Node', keep='first')\ .reset_index(drop=True) # 调整列顺序为需求格式 result = result[['Node', 'Label_S', 'Property', 'Merchandising']] # 输出查看结果 print(result)
输出说明
运行后得到的result表结构和你给出的预期输出完全一致,其中仅作为Source出现的节点会保留Label_S值,仅作为Target出现的节点Label_S字段为空。
内容的提问来源于stack exchange,提问作者Math
相关产品推荐
相关产品推荐

