# JuliaDB select/filter multiple string values in one column

**URL:** https://discourse.julialang.org/t/juliadb-select-filter-multiple-string-values-in-one-column/9918
**Category:** Data
**Tags:** question, package
**Created:** [March 23, 2018, 9:51am UTC](https://discourse.julialang.org/t/juliadb-select-filter-multiple-string-values-in-one-column/9918 "2018-03-23T09:51:53Z")
**Posts on this page:** 11
**Page:** 1

<div class="post-metadata">

### Author: ![macieyo](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/macieyo/32/3792_2.png) [@macieyo](https://discourse.julialang.org/u/macieyo)
#### Post date: [March 23, 2018, 9:51am UTC](https://discourse.julialang.org/t/juliadb-select-filter-multiple-string-values-in-one-column/9918/1 "2018-03-23T09:51:53Z")

</div>

Hello Julia Community,

I have a question regarding usage of JuliaDB.

My table consist with 5 columns and I need to select/filter by one column containing string values.

I am able to do it with one string value:

```julia
table = filter(x -> x == "LUX - All-in fee", df, select = :FEE_TYPE)

```

I have additional 3 string values and I would like to have them in one line like in the following Python/Pandas line:

```julia
df = df[df.FEE_TYPE.str.contains('LUX - All-in fee|LUX - IM fee|LUX - ManCo fee|LUX - Perf fee')]

```

I would appreciate any help from experienced Julia users.

Kind regards

Mac

---

<div class="post-metadata">

### Author: ![y4lu](https://avatars.discourse-cdn.com/v4/letter/y/47e85d/32.png) [@y4lu](https://discourse.julialang.org/u/y4lu)
#### Post date: [March 23, 2018, 10:30am UTC](https://discourse.julialang.org/t/juliadb-select-filter-multiple-string-values-in-one-column/9918/2 "2018-03-23T10:30:21Z")

</div>

There’s probably a function for that in juliadb, but with stdlibs

```julia
filtervals = ["LUX - All-in fee"; "LUX - IM fee"; "..."]
table = filter(x-> contains(==, filtervals, x), df, select = :FEE_TYPE)
```

---

<div class="post-metadata">

### Author: ![macieyo](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/macieyo/32/3792_2.png) [@macieyo](https://discourse.julialang.org/u/macieyo)
#### Post date: [March 23, 2018, 12:41pm UTC](https://discourse.julialang.org/t/juliadb-select-filter-multiple-string-values-in-one-column/9918/3 "2018-03-23T12:41:37Z")

</div>

@y4lu Thank you very much, it worked perfectly!

---

<div class="post-metadata">

### Author: ![y4lu](https://avatars.discourse-cdn.com/v4/letter/y/47e85d/32.png) [@y4lu](https://discourse.julialang.org/u/y4lu)
#### Post date: [March 23, 2018, 1:01pm UTC](https://discourse.julialang.org/t/juliadb-select-filter-multiple-string-values-in-one-column/9918/4 "2018-03-23T13:01:35Z")

</div>

Ah you’re welcome  
`filter()` is the correct function too, [ref](http://juliadb.org/latest/api/selection.html#Filter-1)

---

<div class="post-metadata">

### Author: ![macieyo](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/macieyo/32/3792_2.png) [@macieyo](https://discourse.julialang.org/u/macieyo)
#### Post date: [March 23, 2018, 2:57pm UTC](https://discourse.julialang.org/t/juliadb-select-filter-multiple-string-values-in-one-column/9918/5 "2018-03-23T14:57:17Z")

</div>

If someone is interested, I also made it to work in one line with the boolean operator ||

```julia
table = filter(x -> x == "LUX - All-in fee" || x == "LUX - IM fee" || x == "LUX - ManCo fee" || x == "LUX - Perf fee", df, select = :FEE_TYPE)

```

Cheers

---

<div class="post-metadata">

### Author: ![tk3369](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/tk3369/32/2824_2.png) [@tk3369](https://discourse.julialang.org/u/tk3369)
#### Post date: [March 23, 2018, 3:21pm UTC](https://discourse.julialang.org/t/juliadb-select-filter-multiple-string-values-in-one-column/9918/6 "2018-03-23T15:21:39Z")

</div>

Does it also work with the `in` operator?

---

<div class="post-metadata">

### Author: ![piever](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/piever/32/1815_2.png) [@piever](https://discourse.julialang.org/u/piever)
#### Post date: [March 23, 2018, 3:28pm UTC](https://discourse.julialang.org/t/juliadb-select-filter-multiple-string-values-in-one-column/9918/7 "2018-03-23T15:28:31Z")

</div>

To check that `x` is one out of three possible strings, you could put the strings into an `Array`, for example:

`filter(x -> x in ["LUX - All-in fee", "LUX - IM fee", "LUX - ManCo fee", "LUX - Perf fee"], df, select = :FEE_TYPE)`

If instead you want to check that `x` contains one of the three strings, it may be worth looking into [regular expressions](https://docs.julialang.org/en/stable/manual/strings/#Regular-Expressions-1). For example this would be:

`filter(r"LUX - (All-in|IM|ManCo|Perf) fee", df, select = :FEE_TYPE)`

---

<div class="post-metadata">

### Author: ![macieyo](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/macieyo/32/3792_2.png) [@macieyo](https://discourse.julialang.org/u/macieyo)
#### Post date: [March 23, 2018, 3:38pm UTC](https://discourse.julialang.org/t/juliadb-select-filter-multiple-string-values-in-one-column/9918/8 "2018-03-23T15:38:57Z")

</div>

The solution with ‘in’ operator is very nice and concise 😀👍

Thank you!

---

<div class="post-metadata">

### Author: ![jsaraviadrago](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jsaraviadrago/32/20358_2.png) [@jsaraviadrago](https://discourse.julialang.org/u/jsaraviadrago)
#### Post date: [February 10, 2022, 6:02pm UTC](https://discourse.julialang.org/t/juliadb-select-filter-multiple-string-values-in-one-column/9918/9 "2022-02-10T18:02:46Z")

</div>

Hi everyone,

I also tried this solution but didn’t work for me.

```julia
sing DataFrames, Pkg, CSV, Gadfly, HypothesisTests, Statistics

data = CSV.read("/Users/home/Documents/MP blog 2021/Data/UEFA champions league/data_2022_AH.csv", DataFrame, normalizenames=true)

first(data,5)

df_PS = select(data, :Equipo, :Score, :Remate, :Remate_arco, :Posesion, :Pases, :Precision_pases, :Faltas, :Corners)

```

I was able to run my code properly.

But when I try this

```julia
filter_vals =["Paris Saint-Germain"; "Sevilla"; "Manchester City"; "Ajax"]

table = filter(x-> contains(==, filter_vals, x), df_PS, select = :Equipo)

```

An error appear that select isn’t found.

Any help would be highly appreciated.

---

<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: [February 11, 2022, 8:34am UTC](https://discourse.julialang.org/t/juliadb-select-filter-multiple-string-values-in-one-column/9918/10 "2022-02-11T08:34:41Z")

</div>

You aren’t working with JuliaDB, so you should probably start a new thread when asking about unrelated packages (in any case it’s advisable to start a new thread rather than resurrect a four year old one).

That said it sounds like you’re just looksing for something like

```julia
df_PS[in(filter_vals).(df_PS.Equipo), :]

```

---

<div class="post-metadata">

### Author: ![jsaraviadrago](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jsaraviadrago/32/20358_2.png) [@jsaraviadrago](https://discourse.julialang.org/u/jsaraviadrago)
#### Post date: [February 11, 2022, 3:18pm UTC](https://discourse.julialang.org/t/juliadb-select-filter-multiple-string-values-in-one-column/9918/11 "2022-02-11T15:18:53Z")

</div>

> [@nilshg](#):
>
> `df_PS[in(filter_vals).(df_PS.Equipo), :]`

Thank you very much! Sorry for the confusion. If I have other questions I would start a new thread.

It worked!
