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

合并列并合并内容:如何将两列内容相加生成新列?

嘿,这个两列相加并正确处理NA的需求很常见,我给你整理了R和Python两种常用数据分析工具的实现方法,完全符合你的示例要求:

R语言实现

基础R方法

不需要额外安装包,用rowSums结合ifelse就能搞定,逻辑是:如果两列都是NA,就返回NA;否则忽略NA进行求和(相当于把单个NA当成0来加):

# 假设你的数据框叫df
df$X3 <- ifelse(is.na(df$X1) & is.na(df$X2), 
                NA, 
                rowSums(df[, c("X1", "X2")], na.rm = TRUE))

dplyr包方法(更优雅的 tidyverse 风格)

如果你平时用tidyverse系列工具,用dplyr的mutate和case_when来写可读性更强:

library(dplyr)

df <- df %>%
  mutate(X3 = case_when(
    # 两列都是NA时返回NA
    is.na(X1) & is.na(X2) ~ NA_real_,
    # 其他情况对X1和X2求和,忽略NA
    TRUE ~ rowSums(select(., X1, X2), na.rm = TRUE)
  ))
Python Pandas实现

用Pandas的话,结合np.where和sum方法可以简洁实现需求:

import pandas as pd
import numpy as np

# 先构造你的示例数据框(如果已有数据可以跳过这步)
df = pd.DataFrame({
    "X1": [3, 6, 3, 0, None, None],
    "X2": [5, 9, 3, 6, 4, None]
})

# 生成X3列
df["X3"] = np.where(
    # 判断两列是否都是NA
    df[["X1", "X2"]].isna().all(axis=1),
    # 是就返回NaN
    np.nan,
    # 否则对两列求和,忽略单个NA
    df[["X1", "X2"]].sum(axis=1, skipna=True)
)

运行后你就能得到和示例完全一致的X3列啦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:23:37