我有以下看起来的数据框:
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/