# Release announcements for DataFrames.jl

**URL:** <https://discourse.julialang.org/t/release-announcements-for-dataframes-jl/18258>\
**Category:** Data\
**Tags:** announcement, dataframes\
**Created:** [December 3, 2018, 6:06pm UTC](https://discourse.julialang.org/t/release-announcements-for-dataframes-jl/18258 "2018-12-03T18:06:13Z")\
**Posts on this page:** 11\
**Page:** 10

<div class="post-metadata">

**Author:** ![bkamins](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/bkamins/32/208538_2.png) [@bkamins](https://discourse.julialang.org/u/bkamins)\
**Post date:** [October 5, 2022, 10:02pm UTC](https://discourse.julialang.org/t/release-announcements-for-dataframes-jl/18258/188 "2022-10-05T22:02:33Z")

</div>

All tutorials referenced in [Introduction · DataFrames.jl](https://dataframes.juliadata.org/stable/#DataFrames.jl) have been updated to DataFrames.jl 1.4.0.

Some conclusions from the process:

- we have accumulated over the years a lot of curated tutorials. I am really convinced, after going through them while updating, that if someone carefully studies them it is sufficient to confidently work with DataFrames.jl.
- the updating process mostly required adding new functionalities and fixing broadcasting assignment rule explanation (PR [make broadcasting assignment consistent with ! by bkamins · Pull Request #3022 · JuliaData/DataFrames.jl · GitHub](https://github.com/JuliaData/DataFrames.jl/pull/3022)); other than that it was smooth (which is a good sign 😄).
- PrettyTables.jl in HTML backend works really nice; thank you @Ronis_BR for working on it (I have opened some issues related to things I have noticed when going through loads of outputs that can be used as ideas for further improvements).

---

<div class="post-metadata">

**Author:** ![alfaromartino](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/alfaromartino/32/52986_2.png) [@alfaromartino](https://discourse.julialang.org/u/alfaromartino)\
**Post date:** [October 5, 2022, 11:31pm UTC](https://discourse.julialang.org/t/release-announcements-for-dataframes-jl/18258/189 "2022-10-05T23:31:54Z")

</div>

Minor typos in the documentation (the examples are not displayed correctly, ```jldoctest was missing)

[https://dataframes.juliadata.org/stable/lib/functions/#Base.invpermute!](https://dataframes.juliadata.org/stable/lib/functions/#Base.invpermute!)  
[https://dataframes.juliadata.org/stable/lib/functions/#Base.permute!](https://dataframes.juliadata.org/stable/lib/functions/#Base.permute!)  
[https://dataframes.juliadata.org/stable/lib/functions/#Random.shuffle](https://dataframes.juliadata.org/stable/lib/functions/#Random.shuffle)  
[https://dataframes.juliadata.org/stable/lib/functions/#Random.shuffle!](https://dataframes.juliadata.org/stable/lib/functions/#Random.shuffle!)

I corrected them, but don’t know how modifications to documentations work. So, let me know if everything is fine.

Thanks for your hard work!!

---

<div class="post-metadata">

**Author:** ![nalimilan](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/nalimilan/32/147_2.png) [@nalimilan](https://discourse.julialang.org/u/nalimilan)\
**Post date:** [October 8, 2022, 2:40pm UTC](https://discourse.julialang.org/t/release-announcements-for-dataframes-jl/18258/190 "2022-10-08T14:40:26Z")

</div>

Split this topic on October 8, 2022, 2:40pm UTC

5 posts were split to a new topic: [Asof join support in DataFrames.jl](https://discourse.julialang.org/t/asof-join-support-in-dataframes-jl/88445)

---

<div class="post-metadata">

**Author:** ![bkamins](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/bkamins/32/208538_2.png) [@bkamins](https://discourse.julialang.org/u/bkamins)\
**Post date:** [February 11, 2023, 2:52pm UTC](https://discourse.julialang.org/t/release-announcements-for-dataframes-jl/18258/191 "2023-02-11T14:52:58Z")

</div>

DataFrames.jl 1.5.0 is out.

You can find a list of all changes since 1.4.4 [here](https://github.com/JuliaData/DataFrames.jl/releases/tag/v1.5.0) and a summary of most important additions in [NEWS.md](https://github.com/JuliaData/DataFrames.jl/blob/main/NEWS.md).

Here let me briefly summarize most important things that will affect almost everyone using DataFrames.jl:

- DataFrames.jl is Julia 1.9 ready; we have improved precompilation so that things will be more snappy;
- `groupby` now fully supports all kind of sorting options that allow for specifying the resulting group order;
- joining functions now support `order` keyword argument allowing the user to specify the order of the rows in the produced table (this is a big long time requested convenience feature);
- Improved `Cols` column selector (allowing for performing of any set operation of passed arguments and allowing for passing multiple predicate functions that perform column selection).

The precompilation support in DataFrames.jl has two modes:

- full precompilation;
- no precompilation.

The default is full precompilation. In this mode the package should precompile in around 50 seconds and then its load time should be around 1.8 seconds. The benefit of full precompilation is that later commonly used functions do not need to be compiled so that you will have a more responsive experience.

The no precompilation mode disables precompilation. Then the package precompiles in around 5 seconds, and its load time is under 1 second. The downside is that later every function needs to be compiled when it is used.

To give you a flavor of the difference, the following example code:

```julia
using DataFrames
df = DataFrame(rand(5, 3), :auto)
combine(df, :x1 => sum)
combine(df, All() .=> minimum)
df.id = [1, 1, 2, 2, 2];
gdf = groupby(df, :id);
transform(gdf, AsTable(Cols(r"x")) => ByRow(sum))

```

runs in around 4.4 seconds without precompilation and 2.4 seconds with precompilation (note that timings include package load time).

The instructions how to turn on/off precompilation are given [here](https://dataframes.juliadata.org/stable/man/basics/#Setting-up-the-Environment). Note that this can be done on a per project environment basis.

---

<div class="post-metadata">

**Author:** ![mbauman](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mbauman/32/31082_2.png) [@mbauman](https://discourse.julialang.org/u/mbauman)\
**Post date:** [February 13, 2023, 3:16pm UTC](https://discourse.julialang.org/t/release-announcements-for-dataframes-jl/18258/192 "2023-02-13T15:16:28Z")

</div>

Split this topic on February 13, 2023, 3:16pm UTC

4 posts were split to a new topic: [The naming of `allunique` in DataFrames.jl](https://discourse.julialang.org/t/the-naming-of-allunique-in-dataframes-jl/94568)

---

<div class="post-metadata">

**Author:** ![bkamins](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/bkamins/32/208538_2.png) [@bkamins](https://discourse.julialang.org/u/bkamins)\
**Post date:** [February 13, 2023, 12:02pm UTC](https://discourse.julialang.org/t/release-announcements-for-dataframes-jl/18258/196 "2023-02-13T12:02:31Z")

</div>

All tutorials listed in [Introduction · DataFrames.jl](https://dataframes.juliadata.org/stable/#DataFrames.jl) are now updated to DataFrames.jl 1.5.0 and Julia 1.9.

---

<div class="post-metadata">

**Author:** ![bkamins](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/bkamins/32/208538_2.png) [@bkamins](https://discourse.julialang.org/u/bkamins)\
**Post date:** [July 10, 2023, 7:30am UTC](https://discourse.julialang.org/t/release-announcements-for-dataframes-jl/18258/197 "2023-07-10T07:30:00Z")

</div>

DataFrames.jl 1.6.0 has just been released (so it can be field tested by users before JuliaCon2023 😄).

This release focused mostly on code cleanup, improving API consistency, and integration issues. You can find the list of user-visible changes [here](https://github.com/JuliaData/DataFrames.jl/blob/main/NEWS.md#dataframesjl-v16-release-notes) and of all changes [here](https://github.com/JuliaData/DataFrames.jl/releases/tag/v1.6.0).

I want to highlight three changes (the first two are things that are likely to be often used in daily work with DataFrames.jl; the third potentially could break some existing code - this is unlikely, but users should be aware of the risk):

- Improvement of the convenience of using the `Not` selector: it now allows passing multiple positional arguments that are treated as if they were wrapped in `Cols` and does not throw an error when a vector of duplicate indices is passed when making column selection
- `DataFrame` constructor now allows passing column names that replace the names generated by default
- All `Tables.AbstractRow` subtypes are now treated in the same way as `DataFrameRow` in all operations; this could be minimally breaking in case users relied on `Tables.AbstractRow` to be treated as a scalar by `combine` in the past (the change follows the requests that treating `Tables.AbstractRow` as a scalar is on a border of being a bug)

The list of functionalities planned for 1.7 release can be found here [1.7 Milestone · GitHub](https://github.com/JuliaData/DataFrames.jl/milestone/13).

---

<div class="post-metadata">

**Author:** ![bkamins](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/bkamins/32/208538_2.png) [@bkamins](https://discourse.julialang.org/u/bkamins)\
**Post date:** [September 24, 2023, 5:23pm UTC](https://discourse.julialang.org/t/release-announcements-for-dataframes-jl/18258/198 "2023-09-24T17:23:38Z")

</div>

> **[DataFrames.jl: Flexible and Fast Tabular Data in Julia by Milan ...](https://www.jstatsoft.org/article/view/v107i04)**
>
> DataFrames.jl is a package written for and in the Julia language offering flexible and efficient handling of tabular data sets in memory. Thanks to Julia's unique strengths, it provides an appealing set of features: Rich support for standard data...

---

<div class="post-metadata">

**Author:** ![George9000](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/george9000/32/23619_2.png) [@George9000](https://discourse.julialang.org/u/George9000)\
**Post date:** [September 24, 2023, 6:21pm UTC](https://discourse.julialang.org/t/release-announcements-for-dataframes-jl/18258/199 "2023-09-24T18:21:45Z")

</div>

From strength to strength. Comprehensive write-up. Does Bogumil sleep?

---

<div class="post-metadata">

**Author:** ![ArchieCall](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/archiecall/32/206_2.png) [@ArchieCall](https://discourse.julialang.org/u/ArchieCall)\
**Post date:** [September 25, 2023, 12:32am UTC](https://discourse.julialang.org/t/release-announcements-for-dataframes-jl/18258/200 "2023-09-25T00:32:07Z")

</div>

This write up about DataFrames.jl in the JOSS journal is outstanding. The detailed discussion about the design choices is very informative. I have been using DataFrames.jl for many years, but this article adds new perspective on various nuances in the package.

Kudos to Bogumil and Milan.

---

<div class="post-metadata">

**Author:** ![klwlevy](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/klwlevy/32/25272_2.png) [@klwlevy](https://discourse.julialang.org/u/klwlevy)\
**Post date:** [September 28, 2023, 8:26pm UTC](https://discourse.julialang.org/t/release-announcements-for-dataframes-jl/18258/201 "2023-09-28T20:26:39Z")

</div>

I think he had a brief nap back in 2014, but not since then.

[Previous page](https://discourse.julialang.org/t/release-announcements-for-dataframes-jl/18258.md?page=9)
