# How to add a row to DataFrame where one field is missing

**URL:** <https://discourse.julialang.org/t/how-to-add-a-row-to-dataframe-where-one-field-is-missing/46740>\
**Category:** New to Julia\
**Tags:** question, dataframes\
**Created:** [September 17, 2020, 12:38am UTC](https://discourse.julialang.org/t/how-to-add-a-row-to-dataframe-where-one-field-is-missing/46740 "2020-09-17T00:38:15Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![mkarikom](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mkarikom/32/7096_2.png) [@mkarikom](https://discourse.julialang.org/u/mkarikom)\
**Post date:** [September 17, 2020, 12:38am UTC](https://discourse.julialang.org/t/how-to-add-a-row-to-dataframe-where-one-field-is-missing/46740/1 "2020-09-17T00:38:16Z")

</div>

The MWE below tries to add a row to a DataFrame where some rows have missing values:

```julia
tps = [String,Int64,Int64]
nms = ["str","int","int2"]
df = DataFrame(tps,nms)
data = [(str="a",int=1,int2=missing),(str="b",int=2,int2=0)]
function loaddata(data,df)
    for d in data
        push!(df,d)
    end
end

loaddata(data,df)
ERROR: MethodError: Cannot `convert` an object of type Missing to an object of type Int64

```

---

<div class="post-metadata">

**Author:** ![pdeffebach](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/pdeffebach/32/10320_2.png) [@pdeffebach](https://discourse.julialang.org/u/pdeffebach)\
**Post date:** [September 17, 2020, 12:57am UTC](https://discourse.julialang.org/t/how-to-add-a-row-to-dataframe-where-one-field-is-missing/46740/2 "2020-09-17T00:57:34Z")

</div>

use `promote = true` as a keyword argument.

---

<div class="post-metadata">

**Author:** ![mkarikom](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mkarikom/32/7096_2.png) [@mkarikom](https://discourse.julialang.org/u/mkarikom)\
**Post date:** [September 17, 2020, 2:07am UTC](https://discourse.julialang.org/t/how-to-add-a-row-to-dataframe-where-one-field-is-missing/46740/3 "2020-09-17T02:07:32Z")

</div>

The issue was initializing the DataFrame with Union types to allow missing values in the rows. This works:

```julia
tps = [Union{Missing,String},Union{Missing,Int64},Union{Missing,Int64}]
nms = ["str","int","int2"]
df = DataFrame(tps,nms)
data = [(str="a",int=1,int2=missing),(str="b",int=2,int2=0)]
function loaddata(data,df)
    for d in data
        push!(df,d)
    end
end

loaddata(data,df)

```

---

<div class="post-metadata">

**Author:** ![mkarikom](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mkarikom/32/7096_2.png) [@mkarikom](https://discourse.julialang.org/u/mkarikom)\
**Post date:** [September 17, 2020, 2:24am UTC](https://discourse.julialang.org/t/how-to-add-a-row-to-dataframe-where-one-field-is-missing/46740/4 "2020-09-17T02:24:41Z")

</div>

> [@pdeffebach](#):
>
> use `promote = true` as a keyword argument.

Thanks, @pdeffebach. Sorry I wasn’t clear, I don’t want to create new columns so I can’t use promote

---

<div class="post-metadata">

**Author:** ![pdeffebach](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/pdeffebach/32/10320_2.png) [@pdeffebach](https://discourse.julialang.org/u/pdeffebach)\
**Post date:** [September 17, 2020, 12:12pm UTC](https://discourse.julialang.org/t/how-to-add-a-row-to-dataframe-where-one-field-is-missing/46740/5 "2020-09-17T12:12:03Z")

</div>

ah sorry, you want `cols = :union` as a keyword argument. check out the docs with `?push!` and scroll down to the section on data frames.
