You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Pandas纵向合并仅部分列相同的两个DataFrame?

在Pandas中垂直拼接不同列的DataFrame

这正是pandas.concat()函数的拿手场景!你要的是行方向的垂直堆叠,同时保留两个表的所有列,缺失的位置自动填充空值(Pandas里用NaN表示,和你说的Null是同一个意思)。下面一步步来实现:

1. 先构造示例数据

先把你给出的两个表转换成Pandas DataFrame:

import pandas as pd

# 表1数据
df1 = pd.DataFrame({
    'player_name': ['player1', 'player2', 'player3'],
    'points': [27.0, 31.0, 15.0],
    'rebounds': [9.0, 4.0, 10.0],
    'assists': [9.0, 5.0, 1.0]
})

# 表2数据
df2 = pd.DataFrame({
    'player_name': ['player4', 'player5', 'player6'],
    'points': [17.0, 21.0, 26.0],
    'height': ["6'0\"", "6'2\"", "6'5\""],
    'weight': [200, 230, 270]
})

2. 执行拼接操作

一行代码就能搞定:

# 垂直拼接两个DataFrame,保留所有列并重置索引
result_df = pd.concat([df1, df2], axis=0, join='outer', ignore_index=True)

3. 参数解释

给你拆解一下关键参数的作用:

  • axis=0:指定按行方向拼接(把第二个表的行接在第一个表后面),这是默认值,也可以省略不写
  • join='outer':保留两个DataFrame的所有列,共同列自动合并,非共同列的缺失位置填充NaN,这也是默认值
  • ignore_index=True:把结果的索引重新从0开始排序,避免出现重复索引(比如两个表原本都有0、1、2的索引),如果不需要重置索引可以去掉这个参数

4. 查看结果

运行后打印result_df,得到的结果和你期望的完全一致:

player_name  points  rebounds  assists height  weight
0     player1    27.0       9.0      9.0    NaN     NaN
1     player2    31.0       4.0      5.0    NaN     NaN
2     player3    15.0      10.0      1.0    NaN     NaN
3     player4    17.0       NaN      NaN   6'0"     200
4     player5    21.0       NaN      NaN   6'2"     230
5     player6    26.0       NaN      NaN   6'5"     270

这里的NaN就是Pandas里的空值,和你示例中的Null功能完全一致~

内容的提问来源于stack exchange,提问作者Jane Sully

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 08:52:18