数据框连接是指把多个数据框沿行方向拼接成一张更长的表。课程使用 pd.concat():concat() 方法用于连接多个数据框。例如,数据框 df1 表示一个班的部分同学的语文和数学成绩,df2 表示另一部分同学的成绩,现在需要将它们连接成一个数据框。导入惯例为 import pandas as pd。调用时第一个参数必须是数据框组成的列表,写作 cheng = pd.concat([df1, df2], ignore_index=True)。列表里可以放两个或更多数据框,连接顺序与列表顺序一致:先出现的表在上,后出现的表接在下面。连接生成新数据框,不修改原来的 df1 和 df2。教案将「区分合并和连接的不同用法」列为教学难点:merge() 按关键字横向拼列,concat() 把多段记录上下拼接。
课程示例中,df1 含学号 201、202、203 的语文与数学,df2 含 204、205、206 的同类成绩:df1 = pd.DataFrame({'学号': ['201', '202', '203'], '语文': [91, 82, 93], '数学': [94, 85, 96]}),df2 = pd.DataFrame({'学号': ['204', '205', '206'], '语文': [95, 87, 83], '数学': [84, 75, 91]})。执行 cheng = pd.concat([df1, df2], ignore_index=True) 后,新数据框列为「学号、语文、数学」,共 6 行,顺序是先 df1 再 df2:201 对应语文 91、数学 94;202 对应 82 与 85;203 对应 93 与 96;204 对应 95 与 84;205 对应 87 与 75;206 对应 83 与 91。参数 ignore_index=True 用于重建索引,结果行标签为连续的 0 到 5,而不是两表原来各自的 0、1、2。
同一 concat() 在 4.1.2 中也用于 pandas 2.x 在数据框末尾追加新行:先把新行做成数据框,再 df = pd.concat([df, new_row])。易错点:必须传入列表 [df1, df2],不能写成 pd.concat(df1, df2);concat() 按出现顺序上下堆叠,不按「学号」匹配,两表学号可以完全不同——若误用 merge() 且 how='inner',本例两表学号无交集,结果会是空表;漏写 ignore_index=True 时不会重建索引,两段都会保留原来的 0、1、2,再用 loc[0] 会同时取出两行;concat() 不改原对象,必须接收返回值。
concat() 用于连接多个数据框;第一个参数是列表,如 pd.concat([df1, df2], ignore_index=True)。ignore_index=True 用于重建索引,结果行标签为 0、1、2…。merge() 不同:merge() 按共同列横向拼字段,concat() 沿行方向加长。concat():新行先做成数据框,再与原表连接。