Julia - 搜索所有列缺失的行并删除这些行的函数

Har*_*mba 4 dataframe julia

我试图找到类似的功能,就像在Python中一样,我可以删除连续具有 \xe2\x80\x98all\xe2\x80\x99 空值的行 -

\n

python 中的代码 - 使用 Pandas 数据框 \xe2\x80\x98close_prices\xe2\x80\x99

\n
closed_prices.dropna(axis=0, how=\xe2\x80\x98all\xe2\x80\x99, inplace=True)\n
Run Code Online (Sandbox Code Playgroud)\n

基本上我想删除所有列都缺少值的行 - 我正在使用股票数据并希望删除周末和节假日,每列代表特定股票的收盘价。因此,如果特定行的所有列值均为空/缺失,我想删除该行。

\n

我正在使用下面的代码 -

\n
using DataFrames\nusing DataFramesMeta\nusing CSV\nusing Dates\nusing Query\n\n\nfh_5 = CSV.read("D:\\\\Julia_Dataframe\\\\JuliaCon2020-DataFrames-Tutorial\\\\fh_5yrs.csv", DataFrame)\n\nmin_date = minimum(fh_5[:, "date"])\nmax_date = maximum(fh_5[:, "date"])\ndate_seq = string.(collect(Dates.Date(min_date) : Dates.Day(1) : Dates.Date(max_date)))\ndate_range = df = DataFrame(dates = date_seq)\ndate_range.dates = Date.(date_range.dates, "yyyy-mm-dd")\n\nfor s in unique(fh_5.symbol)\n    df = fh_5[fh_5.symbol .== s, ["date","close"]]\n    date_range = leftjoin(date_range, df, on =:"dates" => :"date")\n    rename!(date_range, Dict(:close => s))\nend\nsize(date_range, 1)\nsize(filter(x -> any(!ismissing, x), date_range), 1)\nsize(date_range, 1)\n
Run Code Online (Sandbox Code Playgroud)\n

Bog*_*ski 6

我假设您正在使用 DataFrames.jl。那么如果df是你的数据框就写:

\n
filter(x -> any(!ismissing, x), df)\n
Run Code Online (Sandbox Code Playgroud)\n

或者filter!如果您想要就地操作。

\n

例子:

\n
julia> using DataFrames, Random\n\njulia> Random.seed!(1234);\n\njulia> df = DataFrame(rand([1, missing], 10, 2), :auto)\n10\xc3\x972 DataFrame\n Row \xe2\x94\x82 x1       x2\n     \xe2\x94\x82 Int64?   Int64?\n\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xbc\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\n   1 \xe2\x94\x82       1        1\n   2 \xe2\x94\x82 missing        1\n   3 \xe2\x94\x82 missing  missing\n   4 \xe2\x94\x82 missing  missing\n   5 \xe2\x94\x82       1        1\n   6 \xe2\x94\x82       1  missing\n   7 \xe2\x94\x82 missing  missing\n   8 \xe2\x94\x82       1  missing\n   9 \xe2\x94\x82       1        1\n  10 \xe2\x94\x82 missing        1\n\njulia> filter(x -> any(!ismissing, x), df)\n7\xc3\x972 DataFrame\n Row \xe2\x94\x82 x1       x2\n     \xe2\x94\x82 Int64?   Int64?\n\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xbc\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\n   1 \xe2\x94\x82       1        1\n   2 \xe2\x94\x82 missing        1\n   3 \xe2\x94\x82       1        1\n   4 \xe2\x94\x82       1  missing\n   5 \xe2\x94\x82       1  missing\n   6 \xe2\x94\x82       1        1\n   7 \xe2\x94\x82 missing        1\n
Run Code Online (Sandbox Code Playgroud)\n