# \[ANN\] DataPipes.jl 0.3.0

**URL:** <https://discourse.julialang.org/t/ann-datapipes-jl-0-3-0/60734>\
**Category:** Package Announcements\
**Tags:** data, piping\
**Created:** [May 7, 2021, 5:29pm UTC](https://discourse.julialang.org/t/ann-datapipes-jl-0-3-0/60734 "2021-05-07T17:29:26Z")\
**Posts on this page:** 1\
**Showing post:** 41

<div class="post-metadata">

**Author:** ![aplavin](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/aplavin/32/222056_2.png) [@aplavin](https://discourse.julialang.org/u/aplavin)\
**Post date:** [July 7, 2021, 10:25am UTC](https://discourse.julialang.org/t/ann-datapipes-jl-0-3-0/60734/41 "2021-07-07T10:25:52Z")

</div>

> [@sijo](#):
>
> We can have both, and they both work nicely with DataFrames 🙂

and btw both are pretty verbose (:  
E.g.,

```julia
transform(df, :a => @_ exp.(_.^2) => :exp_a_square, :a => @_ _.^2 => :a_square)

```

for a dataframe vs

```julia
@p mutate(exp_a_square=exp(_.a^2), a_square=_.a^2, df)

```

with `DataPipes` for other tables.  
Not even talking about multicolumn functions:

```julia
@p mutate(comp_val=_.a > _.b ? _.a^2 : _.a, df)

```

With `Base` only (no `DataPipes`) the first example becomes somewhat less pretty, but still shorter than for dataframes:

```julia
map(r -> (r..., exp_a_square=exp(r.a^2), a_square=r.a^2), df)

```

---

_[View the full topic](https://discourse.julialang.org/t/ann-datapipes-jl-0-3-0/60734)._
