如何使用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
相关产品推荐
相关产品推荐

