# Create new column in dataframe based on list

**URL:** <https://discourse.julialang.org/t/create-new-column-in-dataframe-based-on-list/77483>\
**Category:** General Usage\
**Tags:** question, dataframes\
**Created:** [March 6, 2022, 10:19pm UTC](https://discourse.julialang.org/t/create-new-column-in-dataframe-based-on-list/77483 "2022-03-06T22:19:38Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![jonjilla](https://avatars.discourse-cdn.com/v4/letter/j/7ba0ec/32.png) [@jonjilla](https://discourse.julialang.org/u/jonjilla)\
**Post date:** [March 6, 2022, 10:19pm UTC](https://discourse.julialang.org/t/create-new-column-in-dataframe-based-on-list/77483/1 "2022-03-06T22:19:38Z")

</div>

Hello, I’m trying to figure out how to create a 0,1 valued column in a dataframe based on comparing a dataframe column with a list. Here is an example

```julia
data = DataFrame(:index => String[], :values => Int64[])

push!(data, ["a", 1])
push!(data, ["b", 2])
push!(data, ["c", 1])

list = ["a","b"]

```

I’m trying to create a column called PASS which is 0,1 based on if the index column in this df contains one of the values in this list.

I’ve tried this, but this doesn’t seem to work

`data.pass .= data[in.(data.index , list), :]`

Any help with this?

---

<div class="post-metadata">

**Author:** ![pjentsch0](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/pjentsch0/32/15148_2.png) [@pjentsch0](https://discourse.julialang.org/u/pjentsch0)\
**Post date:** [March 7, 2022, 12:17am UTC](https://discourse.julialang.org/t/create-new-column-in-dataframe-based-on-list/77483/2 "2022-03-07T00:17:27Z")

</div>

Is this what you are looking for?

```julia
julia> data.pass = map(in(list), data.index)
3-element Vector{Bool}:
 1
 1
 0

```

---

<div class="post-metadata">

**Author:** ![DataFrames](https://avatars.discourse-cdn.com/v4/letter/d/e19b73/32.png) [@DataFrames](https://discourse.julialang.org/u/DataFrames)\
**Post date:** [March 7, 2022, 12:58am UTC](https://discourse.julialang.org/t/create-new-column-in-dataframe-based-on-list/77483/3 "2022-03-07T00:58:02Z")

</div>

if `list` is small use

```julia
transform!(data, :index => ByRow(in(list)) => :pass)

```

if it is large use

```julia
transform!(data, :index => ByRow(in(Set(list))) => :pass)

```

---

<div class="post-metadata">

**Author:** ![jonjilla](https://avatars.discourse-cdn.com/v4/letter/j/7ba0ec/32.png) [@jonjilla](https://discourse.julialang.org/u/jonjilla)\
**Post date:** [March 7, 2022, 3:35am UTC](https://discourse.julialang.org/t/create-new-column-in-dataframe-based-on-list/77483/4 "2022-03-07T03:35:32Z")

</div>

Thanks, this works! I guess it would be nice if there were a simple broadcast of the IN statement like in.(list) but I can use this. thanks.

---

<div class="post-metadata">

**Author:** ![lawless-m](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/lawless-m/32/30869_2.png) [@lawless-m](https://discourse.julialang.org/u/lawless-m)\
**Post date:** [March 7, 2022, 8:18am UTC](https://discourse.julialang.org/t/create-new-column-in-dataframe-based-on-list/77483/5 "2022-03-07T08:18:50Z")

</div>

```julia
julia> in(list).(data[!,:index])
3-element BitVector:
 1
 1
 0

julia> in(Set(list)).(data[!,:index])
3-element BitVector:
 1
 1
 0

```

---

<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:** [June 4, 2022, 12:32pm UTC](https://discourse.julialang.org/t/create-new-column-in-dataframe-based-on-list/77483/6 "2022-06-04T12:32:29Z")

</div>

the new column can be built like this

```julia
data.pass = in.(data.index , [list])

#or

data.repass= data.index .∈ [list]

```
