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

如何为Pandas DataFrame的每个ID追加另一DataFrame的行

解决方式:用列表推导式+pd.concat实现行追加

先看示例数据:

import pandas as pd
import numpy as np

# 示例df1
df1 = pd.DataFrame({
    'id': [1, 2],
    'data_col': ['A', 'B']
})

# 示例df2(id列为空)
df2 = pd.DataFrame({
    'id': [np.nan, np.nan],
    'data_col': ['X', 'Y']
})

目标输出效果:

id data_col
0  1.0        A
1  NaN        X
2  NaN        Y
3  2.0        B
4  NaN        X
5  NaN        Y

直接用列表推导式生成每个id对应的拼接块,再整体合并:

# 遍历df1的每一行索引,将该行与df2拼接,最后合并所有结果
result = pd.concat([pd.concat([df1.loc[[idx]], df2], ignore_index=True) for idx in df1.index], ignore_index=True)

为什么不用for/if else循环行?

Pandas的设计核心是向量化操作,循环单行会大幅降低处理效率,尤其是当df1数据量较大时。上面的方法利用Pandas内置的concat方法批量处理,既简洁又高效。

补充说明

如果df1和df2的列不完全一致,concat会自动补全缺失值为NaN,不影响最终结果。如果需要严格保留原列顺序,可在concat时指定sort=False(Pandas 1.0.0及以上版本默认sort=False)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 05:50:24