# Filtering Dataframe date column

**URL:** <https://discourse.julialang.org/t/filtering-dataframe-date-column/104658>\
**Category:** General Usage\
**Created:** [October 6, 2023, 10:51am UTC](https://discourse.julialang.org/t/filtering-dataframe-date-column/104658 "2023-10-06T10:51:11Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![rajmac](https://avatars.discourse-cdn.com/v4/letter/r/77aa72/32.png) [@rajmac](https://discourse.julialang.org/u/rajmac)\
**Post date:** [October 6, 2023, 10:51am UTC](https://discourse.julialang.org/t/filtering-dataframe-date-column/104658/1 "2023-10-06T10:51:11Z")

</div>

I have a dataframe formed by reading in a CSV file as df3 = CSV.read(“data//weight\_filtered.csv”, dateformat=“yyyy-mm-dd”.  
Row │ Date Data  
│ Date Float32  
─────┼─────────────────────  
1 │ 2022-07-01 201.1  
2 │ 2022-07-08 202.1  
3 │ 2022-07-15 203.0  
4 │ 2022-07-22 200.0  
5 │ 2022-07-29 200.8  
6 │ 2022-07-05 202.8  
This yielded the dataframe above. I would like to filter ths by dates less than say 2022-07-22. Having floundered around with different searches and forums I haven’t had any luck or managed to find a way myself, apart from editing the original CSV file. I’m sure I’m missing something simple but any help would be welcome.  
Julia 1.9.3 with CSV v0.10.11

---

<div class="post-metadata">

**Author:** ![fatteneder](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/fatteneder/32/33991_2.png) [@fatteneder](https://discourse.julialang.org/u/fatteneder)\
**Post date:** [October 6, 2023, 11:12am UTC](https://discourse.julialang.org/t/filtering-dataframe-date-column/104658/2 "2023-10-06T11:12:38Z")

</div>

Try

```julia
filter(df3) do row
   row.Date >= DateTime("2022-07-22")
end

```

---

<div class="post-metadata">

**Author:** ![rocco\_sprmnt21](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/rocco_sprmnt21/32/20127_2.png) [@rocco\_sprmnt21](https://discourse.julialang.org/u/rocco_sprmnt21)\
**Post date:** [October 6, 2023, 1:05pm UTC](https://discourse.julialang.org/t/filtering-dataframe-date-column/104658/3 "2023-10-06T13:05:36Z")

</div>

```julia
julia> df
6×2 DataFrame
 Row │ date data    
     │ Date Float64
─────┼─────────────────────
   1 │ 2022-07-01 201.1
   2 │ 2022-07-08 202.1
   3 │ 2022-07-15 203.0
   4 │ 2022-07-22 200.0
   5 │ 2022-07-29 200.8
   6 │ 2022-07-05 202.8

julia> df[df.date .>= df[4,1],:]
2×2 DataFrame
 Row │ date data    
     │ Date Float64
─────┼─────────────────────
   1 │ 2022-07-22 200.0
   2 │ 2022-07-29 200.8

```

```julia
subset(df,:date=>x-> x .>= Date("2022-07-22"))

```

---

<div class="post-metadata">

**Author:** ![tbeason](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/tbeason/32/15898_2.png) [@tbeason](https://discourse.julialang.org/u/tbeason)\
**Post date:** [October 6, 2023, 1:43pm UTC](https://discourse.julialang.org/t/filtering-dataframe-date-column/104658/4 "2023-10-06T13:43:08Z")

</div>

`subset(df3, "Date" => ByRow(<=(Date(2022,7,22))))`

I think DataFramesMeta.jl also has some helper tools to remove the `ByRow` call.

---

<div class="post-metadata">

**Author:** ![nilshg](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/nilshg/32/2283_2.png) [@nilshg](https://discourse.julialang.org/u/nilshg)\
**Post date:** [October 6, 2023, 2:13pm UTC](https://discourse.julialang.org/t/filtering-dataframe-date-column/104658/5 "2023-10-06T14:13:43Z")

</div>

Here’s how I’d use `filter!` (the `!` indicates it modifies your existing `DataFrame`):

```julia
julia> using DataFrames, Dates

julia> df = DataFrame(x = Date(2000):Day(1):Date(2000, 1, 10))
10×1 DataFrame
 Row │ x
     │ Date
─────┼────────────
   1 │ 2000-01-01
   2 │ 2000-01-02
   3 │ 2000-01-03
   4 │ 2000-01-04
   5 │ 2000-01-05
   6 │ 2000-01-06
   7 │ 2000-01-07
   8 │ 2000-01-08
   9 │ 2000-01-09
  10 │ 2000-01-10

julia> filter!(:x => >(Date(2000, 1, 5)), df)
5×1 DataFrame
 Row │ x
     │ Date
─────┼────────────
   1 │ 2000-01-06
   2 │ 2000-01-07
   3 │ 2000-01-08
   4 │ 2000-01-09
   5 │ 2000-01-10

```

---

<div class="post-metadata">

**Author:** ![rajmac](https://avatars.discourse-cdn.com/v4/letter/r/77aa72/32.png) [@rajmac](https://discourse.julialang.org/u/rajmac)\
**Post date:** [October 9, 2023, 3:41pm UTC](https://discourse.julialang.org/t/filtering-dataframe-date-column/104658/6 "2023-10-09T15:41:46Z")

</div>

Hi Nils, Thanks for the prompt reply which works beautifully. Jeff

---

<div class="post-metadata">

**Author:** ![rajmac](https://avatars.discourse-cdn.com/v4/letter/r/77aa72/32.png) [@rajmac](https://discourse.julialang.org/u/rajmac)\
**Post date:** [October 9, 2023, 3:42pm UTC](https://discourse.julialang.org/t/filtering-dataframe-date-column/104658/7 "2023-10-09T15:42:47Z")

</div>

Hi Tyler, Thanks for the prompt reply and solution, Jeff

---

<div class="post-metadata">

**Author:** ![rajmac](https://avatars.discourse-cdn.com/v4/letter/r/77aa72/32.png) [@rajmac](https://discourse.julialang.org/u/rajmac)\
**Post date:** [October 9, 2023, 3:43pm UTC](https://discourse.julialang.org/t/filtering-dataframe-date-column/104658/8 "2023-10-09T15:43:27Z")

</div>

Hi rocco, Thanks for the solution, Jeff

---

<div class="post-metadata">

**Author:** ![rajmac](https://avatars.discourse-cdn.com/v4/letter/r/77aa72/32.png) [@rajmac](https://discourse.julialang.org/u/rajmac)\
**Post date:** [October 9, 2023, 3:43pm UTC](https://discourse.julialang.org/t/filtering-dataframe-date-column/104658/9 "2023-10-09T15:43:57Z")

</div>

Hi Florian, Thanks for the speedy solution, Jeff
