I am trying to find a similar functionality like in Python where in I can delete the rows which have ‘all’ null values in a row -
code in python - Using Pandas dataframe ‘closed_prices’
closed_prices.dropna(axis=0, how=‘all’, inplace=True)
Basically I want to drop rows which have missing values for all columns - I am using a stock data and want to remove the weekends and holidays, each column represent closing price of a particular stock. So if all the column values are null/missing for a particular row I want to delete that row.
I am using the below code -
using DataFrames
using DataFramesMeta
using CSV
using Dates
using Query
fh_5 = CSV.read("D:\\Julia_Dataframe\\JuliaCon2020-DataFrames-Tutorial\\fh_5yrs.csv", DataFrame)
min_date = minimum(fh_5[:, "date"])
max_date = maximum(fh_5[:, "date"])
date_seq = string.(collect(Dates.Date(min_date) : Dates.Day(1) : Dates.Date(max_date)))
date_range = df = DataFrame(dates = date_seq)
date_range.dates = Date.(date_range.dates, "yyyy-mm-dd")
for s in unique(fh_5.symbol)
df = fh_5[fh_5.symbol .== s, ["date","close"]]
date_range = leftjoin(date_range, df, on =:"dates" => :"date")
rename!(date_range, Dict(:close => s))
end
size(date_range, 1)
size(filter(x -> any(!ismissing, x), date_range), 1)
size(date_range, 1)
I assume you are working with DataFrames.jl. Then if df is your data frame just write:
filter(x -> any(!ismissing, x), df)
or filter! if you want an in-place operation.
Example:
julia> using DataFrames, Random
julia> Random.seed!(1234);
julia> df = DataFrame(rand([1, missing], 10, 2), :auto)
10×2 DataFrame
Row │ x1 x2
│ Int64? Int64?
─────┼──────────────────
1 │ 1 1
2 │ missing 1
3 │ missing missing
4 │ missing missing
5 │ 1 1
6 │ 1 missing
7 │ missing missing
8 │ 1 missing
9 │ 1 1
10 │ missing 1
julia> filter(x -> any(!ismissing, x), df)
7×2 DataFrame
Row │ x1 x2
│ Int64? Int64?
─────┼──────────────────
1 │ 1 1
2 │ missing 1
3 │ 1 1
4 │ 1 missing
5 │ 1 missing
6 │ 1 1
7 │ missing 1
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With