← 返回文章库

合并行业表后样本翻倍,怎样查出多对多连接

2026-10-24 · L5

合并行业表后样本翻倍,应先查连接键两侧的计数,不能直接删除结果中的重复行。一个左键出现两次、右键也出现两次,会生成四个配对,即使两张输入各自都保存了合法记录。本例五行特征合并四行分类后输出七行,特征和从十五变十八;解决右键版本冲突并拒绝空键匹配后,保留五行审计台账,特征和回到十五。

两张构造输入究竟各代表什么

左表L1至L5是五个独立样本事件,特征值一至五;A在L1和L2重复出现是合法的,因为它们是两个样本,目标关系应为多对一。右表R1至R4是本次截点的证券行业映射,A同时出现科技与金融,构造为错误混入另一版本。C没有分类,左L5和右R4的键都为空。

完整构造输入如下。时间和状态按本篇约定解释,JSON中的null代表未知而非零:

{
  "left": [
    [
      "L1",
      "A",
      1
    ],
    [
      "L2",
      "A",
      2
    ],
    [
      "L3",
      "B",
      3
    ],
    [
      "L4",
      "C",
      4
    ],
    [
      "L5",
      null,
      5
    ]
  ],
  "left_columns": [
    "左行",
    "键",
    "特征"
  ],
  "repair_evidence": "构造源方确认本次分类截点应选R1,R2为错误混入的另一版本",
  "right": [
    [
      "R1",
      "A",
      "科技"
    ],
    [
      "R2",
      "A",
      "金融"
    ],
    [
      "R3",
      "B",
      "工业"
    ],
    [
      "R4",
      null,
      "未知占位"
    ]
  ],
  "right_columns": [
    "右行",
    "键",
    "行业"
  ]
}

空键表示身份未知,不能因为两边都写null就认定同一证券。右R4“未知占位”只是教学字符串,不是一个可以匹配任意未知证券的行业。本文不使用实际行业标准,不判断公司真正属于哪个行业;它审计的是样本事件连接到单一分类的关系有没有被破坏。

最终修复情景另给构造证据:源方明确本次分类截点该用R1,R2属于错误混入版本。没有这条证据时,不能因为R1排在前面就默认它正确,应该保持冲突待核。本篇把有证据与无证据区分,避免用drop_duplicates保留第一条冒充解决了经济事实。

键计数为什么能提前预测膨胀

内连接积右计数左计数键
422A
111B
001C
111—

对一个相等键,内连接配对数等于左计数乘右计数。A为二乘二得四,B为一,C右边零所以内连接零;空键在错误允许匹配的情景下得到一。各项加六是内连接行数,左连接还要保留C一条未匹配行,所以总七。行数增长在合并之前就可以预测,不需要等最终收益异常再猜原因。

这种膨胀与原始行情重复不是同一问题。L1和L2可能确实是两个不同事件,R1和R2可能确实是不同有效期的分类;两表单独看都保留了事实,但如果只用证券键忽略有效期,就会造出错误笛卡尔配对。修复应补全连接条件或选择本截点唯一分类,不应删除合法样本事件。

展开结果怎样追到来源行

右行左行指示特征行业键
R1L1both1科技A
R2L1both1金融A
R1L2both2科技A
R2L2both2金融A
R3L3both3工业B
—L4left_only4—C
R4L5both5未知占位—

L1被复制到R1与R2,L2也被复制两次,导致特征一与二各多算一次,合计多三。C留下left_only,而L5竟匹配到R4,这是本例刻意保留的空键误匹配。只看both比例会得到六条匹配,看起来很齐全,但其中包含多配和未知身份配对,匹配率高不等于关系正确。

如果合并后再按证券删重复,会把L1、L2其中一个合法样本也删掉;按全部列删重复则科技与金融不同,根本不会删除;按左行只留第一条又依赖右表排序。三种做法都不能证明分类事实,最多改变输出外观。必须回到源行键与有效截点,明确为什么每个样本只能有一个分类。

one-to-many与many-to-one分别检查什么

many_to_oneone_to_manyone_to_one输入
否否否原表
是否否已确认R1为本次分类截点,移除空右键

one_to_many要求左键唯一,本例左边A两行,所以失败;many_to_one要求右键唯一,原表右A两行,也失败;one_to_one要求两侧都唯一,自然失败。右边按证据留下R1、R3后,many_to_one通过,左边仍有合法重复,因此one_to_many仍失败。这正好符合“一证券多样本,每样本一个分类”的需求。

把many_to_many写进验证参数,不等于完成质量验证。它允许这种关系,却不约束两侧唯一性;若研究本来需要多对多,应给配对权重或清楚解释最终观察单位。本文期望的是多对一,不能为了让程序不报错就把声明改成多对多,然后继续按原五个样本理解七行结果。

验证名称里的one与many对应键出现次数,不对应行业名字种数。两条A即使行业文字一样,也会产生复制;两只不同证券同属科技,则不应因为行业相同而去重。审阅者要看稳定连接键和样本身份,不能按显示行业文本判断重复关系。

证据解决冲突与空键拒配后的台账

左行指示状态行业键
L1both放行科技A
L2both放行科技A
L3both放行工业B
L4left_only未匹配—C
L5left_only空键隔离——

L1、L2都连R1科技,B连R3工业,C仍未匹配,L5标为空键隔离。审计台账保持五行,不意味着五行都适合行业分析:三行匹配可用,一行缺分类待补,一行缺身份待核。把空键行保留在台账是为了守住原始分母,不是允许它进入按行业统计。

bothleft_only左输入情景特征和输出
615错误空键可匹配左连接187
325右键证据解决且空键拒配155

修复后特征和十五与原输入一致,输出行数五与左样本数一致,both三、left_only二。错误情景输出七,both六、left_only一,特征和十八。这里守恒只是多对一左连接的必要检查:若把A唯一但错误地映成金融,行数和特征和照样守恒,所以还要核对分类证据,不能由总额一致推断标签正确。

条件变化若要求“只分析已匹配行业”,应另建三行分析视图并报告排除两行及原因,不能把它称为原五行全样本。若缺失恰好集中于某类证券,分析对象可能偏移,需要像缺标签审计那样保留覆盖率。本文不进一步计算行业均值或归因,避免将连接问题扩写成另一篇分类重述实验。

原始文档与实际执行步骤

pandas merge原始文档的Warning、indicator与validate解释空键匹配和基数约束,读取日2026年10月24日。本文标准库显式枚举了“空键可匹配”的错误情景,不声称运行pandas,更不宣称所有数据库SQL都用同样空键行为。

接入前先声明左样本单位、右分类截点和目标基数,输出两侧键计数及空键数。拒配空身份,再检查右键是否在该截点唯一;冲突未解决时交付待核台账,取得版本依据后重建连接。最后同时查输出行数、未匹配状态及原始样本特征和,逐行保留左右来源身份。

这份小表不能确认真实行业字典有效期,也不自动恢复缺失证券身份。它只证明在已给输入与目标关系下,复制发生在哪些配对、修复需要什么证据,以及排除哪些行会改变研究对象。把关系约束放到合并之前,才不会让后续统计在扩张后的样本上默默继续运行。

数据六项自查母文用于检查总体数据健康。样本分割基础工具只辅助理解训练与检验样本的划分;本篇专门的逐行审计由教学表和标准库脚本完成,工具没有内置这些检查。相关核对可继续阅读回测数据版本差异复现、OHLC数据质量逻辑校验。

道积君编辑组,AI辅助编写与核算。本文为构造教学样本,公开脚本只使用Python标准库,默认在脚本同目录生成UTF-8、LF换行的JSON;不依赖pandas、网络或仓库。没有实测第三方框架或实际交易系统,不据此推断真实收益、成交或数据源可靠性。

复算资料

本篇编号DJ4-055。下载Python复算脚本(文本)与构造输入输出JSON,按编号核对本篇。脚本改存为.py后可用Python标准库运行,数据不是实际用户记录。

这个页面有问题?

提交时会附带当前页面地址和浏览器信息,帮助我们定位问题。不填联系方式即为匿名。