如何删除特定列中具有NA的DataFrame的所有行?

时间:2015-01-08 16:14:27

标签: dataframe julia

删除特定列中NA值的DataFrame中的所有行的最优雅方法是什么?

4 个答案:

答案 0 :(得分:12)

我不知道以下内容是否是删除特定列中NA的所有行的最优雅方式,但这是一种方式。

生成玩具DataFrame

julia> df = DataFrame(A = 1:10, B = 2:2:20)
10x2 DataFrame
| Row | A  | B  |
|-----|----|----|
| 1   | 1  | 2  |
| 2   | 2  | 4  |
| 3   | 3  | 6  |
| 4   | 4  | 8  |
| 5   | 5  | 10 |
| 6   | 6  | 12 |
| 7   | 7  | 14 |
| 8   | 8  | 16 |
| 9   | 9  | 18 |
| 10  | 10 | 20 |

julia> df[[1,4,8],symbol("B")] = NA
NA

julia> df
10x2 DataFrame
| Row | A  | B  |
|-----|----|----|
| 1   | 1  | NA |
| 2   | 2  | 4  |
| 3   | 3  | 6  |
| 4   | 4  | NA |
| 5   | 5  | 10 |
| 6   | 6  | 12 |
| 7   | 7  | 14 |
| 8   | 8  | NA |
| 9   | 9  | 18 |
| 10  | 10 | 20 |

过滤掉"B" - 列元素为NA

的行
julia> df[~isna(df[:,symbol("B")]),:]
7x2 DataFrame
| Row | A  | B  |
|-----|----|----|
| 1   | 2  | 4  |
| 2   | 3  | 6  |
| 3   | 5  | 10 |
| 4   | 6  | 12 |
| 5   | 7  | 14 |
| 6   | 9  | 18 |
| 7   | 10 | 20 |

julia> df
10x2 DataFrame
| Row | A  | B  |
|-----|----|----|
| 1   | 1  | NA |
| 2   | 2  | 4  |
| 3   | 3  | 6  |
| 4   | 4  | NA |
| 5   | 5  | 10 |
| 6   | 6  | 12 |
| 7   | 7  | 14 |
| 8   | 8  | NA |
| 9   | 9  | 18 |
| 10  | 10 | 20 |

删除"B" - 列元素为NA

的行
julia> deleterows!(df,find(isna(df[:,symbol("B")])))
7x2 DataFrame
| Row | A  | B  |
|-----|----|----|
| 1   | 2  | 4  |
| 2   | 3  | 6  |
| 3   | 5  | 10 |
| 4   | 6  | 12 |
| 5   | 7  | 14 |
| 6   | 9  | 18 |
| 7   | 10 | 20 |

julia> df
7x2 DataFrame
| Row | A  | B  |
|-----|----|----|
| 1   | 2  | 4  |
| 2   | 3  | 6  |
| 3   | 5  | 10 |
| 4   | 6  | 12 |
| 5   | 7  | 14 |
| 6   | 9  | 18 |
| 7   | 10 | 20 |

答案 1 :(得分:6)

df是您的数据框架,A是缺少值的列。你可以这样做:

nonmissingrows = findin(isna(df[:A]), false)
df = df[nonmissingrows, :]

答案 2 :(得分:3)

using Lazy
using DataFramesMeta
df2 = @> df @where(!isna(:B))
  • @>来自Lazy.jl包,它基本上将df @where(!isna(:B))重写为@where(df, !isna(:B))

  • @whereDataFramesMeta包提供。第二个参数基本上是一个bool列表,其中应该保留行,哪些不应该。这些功能的特殊部分是:B可以作为df[:B]的简写

答案 3 :(得分:0)

要删除包含NA值的所有行,只需运行此操作,假设df是数据帧:

completecases!(df)