如何基于df1删除df2冗余列并添加df3指定列?
解决方法
先给你正确的处理步骤,再说说你之前代码的问题:
正确代码
步骤1:保留df2与df1的共同列
因为df2是由df1合并而来,df1的所有列都包含在df2中,直接提取这些列即可:
# 提取df2中与df1一致的列 df2 = df2[df1.columns]
步骤2:添加df3中指定的列
用join方法(或按列方向的concat)完成拼接,注意要保证两个DataFrame的索引对齐(索引不匹配会导致新增列出现NaN值):
# 添加df3中名为'Name'的列 df2 = df2.join(df3['Name']) # 也可以用按列拼接的concat,效果相同 # df2 = pd.concat([df2, df3['Name']], axis=1)
你之前代码的问题
第一个代码
df2 = df2[(df1.column) & df3['Name']):- 语法错误:括号不匹配,且
df1.column应为df1.columns(复数形式); - 逻辑错误:
&是布尔运算符,不能用来拼接列名,选列需要用列名列表而非布尔条件。
- 语法错误:括号不匹配,且
第二个代码
df2 = pd.concat([df1, df3['Name']):- 语法错误:括号不闭合;
- 逻辑错误:
concat默认按行(axis=0)拼接,不是按列;而且你需要处理的是df2,不是直接拼接df1和df3;如果df1和df3索引完全不匹配,就会返回空值或全NaN的DataFrame。
内容的提问来源于stack exchange,提问作者Alex
相关产品推荐
相关产品推荐

