Pandas如何从多个DataFrame选取指定列合并为新DataFrame
多DataFrame选取指定列合并为单个DataFrame的实现方法
你原有代码运行不符合预期的核心原因:将两个Series对象以列表形式传入pd.DataFrame()时,pandas默认会把列表里的每个元素作为一行数据处理,最终会生成2行4列的结果,和按列拼接的需求完全相反。
以下是两种可直接复用的正确实现方式:
- 方法1:使用
pd.concat()按列拼接(通用性最强,支持2个及以上DataFrame的列合并)
只需要将需要保留的列组成列表,指定拼接轴为列方向(axis=1)即可,代码会自动按行索引对齐数据:
运行后得到的结果和你给出的预期结构完全一致。import pandas as pd # 选中需要的列,按列方向拼接 df = pd.concat([df1['grade'], df2['saving']], axis=1) - 方法2:通过字典映射直接构造新DataFrame(适合列数少的场景,可读性高)
直接以「列名: 对应列数据」的键值对形式传入字典,就能直接生成目标结构:df = pd.DataFrame({ 'grade': df1['grade'], 'saving': df2['saving'] })
注意:以上两种方法都会自动按原DataFrame的索引匹配行,如果两个原DataFrame的行索引不一致,会自动生成NaN填充缺失的对应行;如果你确定两个表行顺序、索引完全对应,不需要额外做对齐处理。
内容的提问来源于stack exchange,提问作者nerd
相关产品推荐
相关产品推荐

