在Pandas中合并两张数据表主要通过concat、merge和join三种方法实现,具体选择取决于数据结构和合并需求:
一、纵向/横向堆叠(concat)
默认按行拼接:将表2的数据追加到表1下方,缺失值用NaN填充,通过pd.concat([df1, df2])实现。
按列拼接:设置axis=1横向合并,维度取最大值,例如pd.concat([df1, df2], axis=1)。
参数控制:
join='inner'仅保留共有索引,join='outer'保留所有索引(默认)。
ignore_index=True可重置索引。
二、键值关联合并(merge)
类似SQL连接:基于共同列合并,支持内连接(how='inner')、左连接(how='left')等。
多键合并:通过on=['列1','列2']指定多列作为连接键。
非同名列合并:使用left_on和right_on分别指定左右表的键列。
三、索引合并(join)
基于索引连接:默认按行索引合并,如df1.join(df2)。
列名冲突处理:通过suffixes=('_左', '_右')添加后缀区分。
四、性能优化建议
大数据集处理:使用chunksize分块读取或dtype优化内存。
替代方案:超大规模数据可考虑Modin库并行计算。
以下为完整代码示例:
import pandas as pd
# 示例数据
df1 = pd.DataFrame({'A': [1, 2], 'B': [3, 4]})
df2 = pd.DataFrame({'A': [5, 6], 'C': [7, 8]})
# 1. concat纵向合并
result_concat = pd.concat([df1, df2], ignore_index=True)
# 2. merge键值合并
result_merge = pd.merge(df1, df2, on='A', how='left')
# 3. join索引合并
result_join = df1.join(df2.set_index('A'), on='A')
演示三种主要合并方法:
1.concat堆叠、merge键值关联、join索引连接。
2.包含参数设置示例:ignore_index重置索引、how指定连接方式。
3.展示不同合并策略的结果差异。