如何按索引合并或拼接两个长度与索引部分不同的DataFrame?
解决方案
你可以用pandas的join()或者merge()方法实现这个需求,核心是使用**外连接(outer join)**来保留所有索引,缺失值自动填充NaN。
步骤1:构造示例数据
先还原你的两个DataFrame:
import pandas as pd data1 = pd.DataFrame({'data1': [16, 37, 18, 49]}, index=[1, 2, 3, 7]) data2 = pd.DataFrame({'data2': [74, 86, 12, 97, 35]}, index=[2, 3, 4, 6, 12])
步骤2:合并DataFrame
方法一:用join()(更简洁,适合基于索引的合并)
merged_result = data1.join(data2, how='outer')
方法二:用merge()(更通用,支持按列或索引合并)
merged_result = pd.merge(data1, data2, left_index=True, right_index=True, how='outer')
验证结果
执行后得到的merged_result就是你要的效果:
| index | data1 | data2 |
|---|---|---|
| 1 | 16 | NaN |
| 2 | 37 | 74 |
| 3 | 18 | 86 |
| 4 | NaN | 12 |
| 6 | NaN | 97 |
| 7 | 49 | NaN |
| 12 | NaN | 35 |
关键说明
how='outer'是核心:它会保留两个DataFrame的所有索引,没有对应数据的位置自动填充NaN,完全匹配你的需求。join()默认按索引合并,所以代码更简洁;merge()需要显式指定left_index=True和right_index=True来基于索引合并。
内容的提问来源于stack exchange,提问作者Owlramble
相关产品推荐
相关产品推荐

