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

如何按条件将数据框中的字符值与其上一行对应值合并

化合物名称折行合并实现方案

核心处理逻辑:先识别所有Time为缺失值的续行,将同属一个化合物的多行文本拼接,最后过滤掉冗余的缺失值行即可,支持连续多行折行的场景,不需要逐行硬编码判断。


方案1:R语言tidyverse实现(推荐,适配大数据量、连续折行场景)

通过分组标记实现向量化处理,执行效率远高于逐行遍历,哪怕单个化合物名拆成3行及以上也能正确识别拼接。

library(tidyverse)

# 构造示例测试数据
df <- tibble(
  Time = c(2.105, 2.490, NA, 2.675),
  Compound_Names = c(
    "Ethanol, 2-(vinyloxy)-  ---",
    "Methoxyacetic acid, 2-methylpropyl ---",
    "ester",
    "Hexanal   ---"
  )
)

# 清洗处理
df_clean <- df %>%
  # 生成分组标识:每遇到一个非NA的Time值,新建一个分组
  mutate(group_id = cumsum(!is.na(Time))) %>%
  group_by(group_id) %>%
  summarise(
    Time = first(na.omit(Time)), # 取分组内第一个有效保留时间
    Compound_Names = str_c(Compound_Names, collapse = " ") # 拼接同组化合物名称,默认用空格分隔
  ) %>%
  select(-group_id) # 移除辅助分组列

运行后df_clean即为目标结构的清洗后数据。如果不需要拼接处的空格,把collapse参数的空格改为空字符串""即可;如果你的缺失值是文本型的"NA"而非R原生缺失值,把判断条件!is.na(Time)改为Time != "NA"即可。


方案2:R基础版实现(无需安装第三方包)

适合临时处理小数据集,不需要加载额外依赖:

# 构造示例测试数据
df <- data.frame(
  Time = c(2.105, 2.490, NA, 2.675),
  Compound_Names = c(
    "Ethanol, 2-(vinyloxy)-  ---",
    "Methoxyacetic acid, 2-methylpropyl ---",
    "ester",
    "Hexanal   ---"
  ),
  stringsAsFactors = FALSE
)

# 初始化结果表
res <- df[0, ]
# 逐行判断处理
for (i in seq_len(nrow(df))) {
  if (is.na(df$Time[i])) {
    # 当前行是续行,拼接到结果表最后一条记录的化合物名上
    res$Compound_Names[nrow(res)] <- paste(res$Compound_Names[nrow(res)], df$Compound_Names[i])
  } else {
    # 当前行是新的有效记录,直接加入结果表
    res <- rbind(res, df[i, ])
  }
}

方案3:Python pandas实现

Python环境下处理可以用同样的分组逻辑:

import pandas as pd
import numpy as np

# 构造示例测试数据
df = pd.DataFrame({
    'Time': [2.105, 2.490, np.nan, 2.675],
    'Compound_Names': [
        "Ethanol, 2-(vinyloxy)-  ---",
        "Methoxyacetic acid, 2-methylpropyl ---",
        "ester",
        "Hexanal   ---"
    ]
})

# 生成分组标识
df['group_id'] = df['Time'].notna().cumsum()
# 分组聚合得到清洗结果
df_clean = df.groupby('group_id', as_index=False).agg({
    'Time': 'first',
    'Compound_Names': lambda x: ' '.join(x)
}).drop(columns=['group_id'])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 21:18:15