如何在Julia DataFrame指定列替换缺失值并保留其他列?
解决Julia DataFrame指定列替换缺失值并保留其他列的问题
针对你的需求,以下几种方法可以实现仅在指定列替换缺失值,同时保留其他列:
方法1:原地修改原DataFrame(直接修改数据)
使用coalesce!(带感叹号的原地版本)直接对指定列进行操作,不会改变其他列:
# 原地替换指定列的缺失值为0 coalesce!.(dat[!, relevant_cols], 0)
执行后,原dat的a、b列缺失值会被替换为0,c列保持原样。
方法2:生成新的DataFrame(不修改原数据)
如果不想改动原数据,推荐用transform函数,它会保留所有列,仅对指定列应用转换:
# 生成新DataFrame,指定列替换缺失值,其他列不变 new_dat = transform(dat, relevant_cols .=> (col -> coalesce.(col, 0)) .=> relevant_cols)
这里的语法列名 => 转换函数 => 目标列名,当目标列名和原列名相同时,会替换原列的内容,其他列自动保留。
你之前的操作之所以丢失c列,是因为dat[!, relevant_cols]提取了仅包含指定列的子DataFrame,后续操作只针对这个子对象,自然不会包含其他列。上面的方法都是基于完整DataFrame进行指定列的修改/转换,因此能保留所有列。
内容的提问来源于stack exchange,提问作者user436994
相关产品推荐
相关产品推荐

