如何将一个DataFrame的列添加到另一DataFrame且保留原有值
问题原因
你写的赋值代码未生效,通常是两个DataFrame的索引不匹配,pandas赋值时默认会按索引对齐,而非按行顺序对齐,导致值无法正确映射。
正确实现方式
下面提供3种适配不同场景的实现方案:
- 最稳妥的按行顺序赋值方案(无视索引差异,适合两个表行数完全一致的场景)
df['code'] = df1['code'].to_numpy()
该方案直接提取df1的code列为numpy数组后赋值,彻底绕过pandas的索引对齐逻辑,比使用.values兼容性更高。
- 横向拼接方案
df = pd.concat([df, df1[['code']]], axis=1)
通过concat方法按行横向拼接两个表,仅保留df1的code列,适合需要保留原表所有索引属性的场景。
- 索引统一后赋值方案(适合原表索引混乱的场景)
# 先重置两个表的索引为从0开始的连续整数,丢弃原有索引 df = df.reset_index(drop=True) df1 = df1.reset_index(drop=True) # 此时索引完全对齐,可直接赋值 df['code'] = df1['code']
以上3种方案都可以得到你需要的目标结构。
内容的提问来源于stack exchange,提问作者Martin
相关产品推荐
相关产品推荐

