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

如何在Julia中合并含NaN的多列生成指定名称的单列?

在Julia中合并含NaN的多列为单列

针对你提供的DataFrame数据,要将多列合并为单列,取每行第一个非NaN值(全NaN则保留NaN),可以通过以下简洁方法实现:

核心方案:使用coalesce函数结合ByRow

coalesce函数的特性是返回传入参数中第一个非NaN的值,正好适配你的需求。结合DataFrames的ByRow函数,可以对每行的指定列应用该逻辑:

using DataFrames

# 初始化示例数据
df = DataFrame(
    V1 = [3,NaN,1,NaN,NaN],
    V2 = [NaN,4,NaN,NaN,NaN],
    V3 = [NaN,NaN,NaN,7,NaN]
)

# 生成仅含合并列的新DataFrame
df_combined = select(df, ByRow(coalesce) => :V_comb)

执行后得到的df_combined就是你预期的结果:

5×1 DataFrame
 Row │ V_comb  
     │ Float64 
─────┼─────────
   1 │     3.0
   2 │     4.0
   3 │     1.0
   4 │     7.0
   5 │   NaN

扩展用法

  • 如果想保留原数据列,同时添加合并列,使用transform:
    df_with_comb = transform(df, ByRow(coalesce) => :V_comb)
    
  • 如果列数量较多,无需手动列名,ByRow(coalesce)会自动对所有传入的列生效,也可以通过cols()指定列范围,比如匹配列名前缀:
    select(df, cols(r"V") => ByRow(coalesce) => :V_comb)
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 03:52:27