# Lowercase dataframe column strings with missing values

**URL:** <https://discourse.julialang.org/t/lowercase-dataframe-column-strings-with-missing-values/78606>\
**Category:** New to Julia\
**Tags:** question, dataframes\
**Created:** [March 28, 2022, 10:24am UTC](https://discourse.julialang.org/t/lowercase-dataframe-column-strings-with-missing-values/78606 "2022-03-28T10:24:41Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![zorbax](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/zorbax/32/34817_2.png) [@zorbax](https://discourse.julialang.org/u/zorbax)\
**Post date:** [March 28, 2022, 10:24am UTC](https://discourse.julialang.org/t/lowercase-dataframe-column-strings-with-missing-values/78606/1 "2022-03-28T10:24:41Z")

</div>

I have a Data Frame with missing values on it.

```julia
using DataFrames

df = DataFrame(
    Y = ["A", "B", "C", "D", "E", "F"],
    Z = ["A", missing, "C", missing, "E", missing]
)

```

When I tried to transform to lowercase I got a `MethodError: no method matching lowercase(::Missing) ` message, it doesn’t work because of the missing values:

```julia
transform(df, :Y => ByRow(x-> lowercase(x)) => :Y)

```

So I’m using:

```julia
broadcast(v -> ismissing(v) ? missing : lowercase(v), df[!, :Z]);

```

- Is there any other simple option to transform a column to lowercase keeping the missing values as it is, something like `df.Z.str.lower()` and `tolower(df$Z)`?
- Is it possible to use `@pipe` with the broadcast function above?

---

<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:** [March 28, 2022, 10:26am UTC](https://discourse.julialang.org/t/lowercase-dataframe-column-strings-with-missing-values/78606/2 "2022-03-28T10:26:39Z")

</div>

use the `passmissing` wrapper:

```julia
julia> transform(df, :Y => ByRow(passmissing(lowercase)) => :Y)
6×2 DataFrame
 Row │ Y Z
     │ String String?
─────┼─────────────────
   1 │ a A
   2 │ b missing
   3 │ c C
   4 │ d missing
   5 │ e E
   6 │ f missing

```
