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

如何将DataFrame指定列的值添加到上一行并删除冗余空行

实现方案

你不需要遍历DataFrame,用Pandas内置的向量化操作就能高效完成需求,两种实现方式如下:

方式1:贴合你原有三步逻辑的实现

中间步骤代码

# 先重置索引避免非连续索引导致报错
df = df.reset_index(drop=True)
# 找到所有A列为空的行的索引
nan_rows = df[df['A'].isnull()].index
# 将空行C列的值拼接到上一行的C列
for idx in nan_rows:
    prev_idx = idx - 1
    # 兼容首行就是空行的极端场景
    if prev_idx in df.index:
        df.loc[prev_idx, 'C'] = f"{df.loc[prev_idx, 'C']}, {df.loc[idx, 'C']}"

后续直接执行你写的df.dropna(subset=['A'])即可得到目标结果。


方式2:更高效率的全流程聚合实现(数据量较大时推荐)

不需要拆分三步,用分组逻辑直接生成结果:

# 按A列非空的位置分组,每组对应一条完整数据
df['group'] = df['A'].notna().cumsum()
# 分组聚合:C列拼接所有值,其余列取组内第一个非空值
df = df.groupby('group').agg(
    A=('A', 'first'),
    B=('B', 'first'),
    C=('C', ', '.join),
    D=('D', 'first')
).reset_index(drop=True)

如果C列存在非字符串类型的值,执行前可以先统一转成字符串:df['C'] = df['C'].astype(str)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 21:45:08