dataframe - 在 Julia 中每组合并具有 NaN 的行

标签 dataframe merge julia nan

我有以下看起来的数据框:

using DataFrames

df = DataFrame(
    group = ["A", "A", "A", "B", "B", "B"],
    V1 = [1, NaN, NaN, 3, NaN, NaN],
    V2 = [NaN, 4, NaN, 2, NaN, NaN],
    V3 = [NaN, NaN, 4, NaN, 1, NaN])

输出:

6×4 DataFrame
 Row │ group   V1       V2       V3      
     │ String  Float64  Float64  Float64 
─────┼───────────────────────────────────
   1 │ A           1.0    NaN      NaN
   2 │ A         NaN        4.0    NaN
   3 │ A         NaN      NaN        4.0
   4 │ B           3.0      2.0    NaN
   5 │ B         NaN      NaN        1.0
   6 │ B         NaN      NaN      NaN

正如您所看到的,每个组都有一些值。我想合并每组的行,以便我们实际上删除 NaN 值。这是所需的输出:

2×4 DataFrame
 Row │ group   V1     V2     V3    
     │ String  Int64  Int64  Int64 
─────┼─────────────────────────────
   1 │ A           1      4      4
   2 │ B           3      2      1

正如您所看到的,这些行现在已合并为每组一行,没有任何 NaN。所以我想知道是否有人知道如何将多行与某些值合并以删除数据帧 Julia 中的 NaN?

最佳答案

julia> combine(groupby(df, :group), Not(:group) .=> x -> filter(!isequal(NaN), x), renamecols=false)
2×4 DataFrame
 Row │ group   V1       V2       V3
     │ String  Float64  Float64  Float64
─────┼───────────────────────────────────
   1 │ A           1.0      4.0      4.0
   2 │ B           3.0      2.0      1.0

请注意,输出不是您所要求的,因为您的源列包含 float ,而您要求的是整数。你可以这样得到它:

julia> combine(groupby(df, :group), Not(:group) .=> x -> Int.(filter(!isequal(NaN), x)), renamecols=false)
2×4 DataFrame
 Row │ group   V1     V2     V3
     │ String  Int64  Int64  Int64
─────┼─────────────────────────────
   1 │ A           1      4      4
   2 │ B           3      2      1

最后请注意,您不应使用 NaN 来指示分析中缺失的数据。 missing 是一种预期的方法。

关于dataframe - 在 Julia 中每组合并具有 NaN 的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74987463/

相关文章:

r - 在 dplyr 中,是否可以使用 mutate 指定在何处添加新列?

python - 在 pandas DataFrame 中检查 dtype 时的注意事项

python - Pandas 中的递归操作

merge - 指定片段的插入顺序

programming-languages - 我需要学习什么才能为编程语言做出贡献?

dataframe - DataFrames.jl 中唯一值组合汇总表

python - Pandas:对列的子集应用过滤器

git - 如何解决 Git merge 冲突

r - 使用 data.table 进行左连接

julia - 如何在 Mac OS X 中升级到 Julia 0.7