I have a dataframe with person names with these fields – last, first and middle names, i’m trying to concatenating these fields to get a full_name column in a dataframe as below.
dfl.with_columns( pl.concat_str([pl.col('last_name'), pl.col('first_name_or_initial'), pl.col('middle_name_or_initial')],' ').alias('full_name')).select([ pl.col('full_name'),pl.col('last_name'), pl.col('first_name_or_initial'), pl.col('middle_name_or_initial')])
Here is the output:
Why I’m getting null in full_name after concatenating last, first and middle_names ? Here If any of field holds null while concatenating strings the result will be NULL like wise in above example last_name is Lee, first_name is James, middle_names is NULL hence full_name is NULL how to ignore NULL field when concatenating the fields.
Advertisement
Answer
We can apppend fill_null
to the Expressions passed to concat_str
:
dfl.with_columns( pl.concat_str( [ pl.col("last_name").fill_null(""), pl.col("first_name_or_initial").fill_null(""), pl.col("middle_name_or_initial").fill_null(""), ], " ", ).str.rstrip().alias("full_name") ).select( [ pl.col("full_name"), pl.col("last_name"), pl.col("first_name_or_initial"), pl.col("middle_name_or_initial"), ] )
shape: (5, 4) ┌─────────────────────┬────────────┬───────────────────────┬────────────────────────┐ │ full_name ┆ last_name ┆ first_name_or_initial ┆ middle_name_or_initial │ │ --- ┆ --- ┆ --- ┆ --- │ │ str ┆ str ┆ str ┆ str │ ╞═════════════════════╪════════════╪═══════════════════════╪════════════════════════╡ │ Dionne Thomas Roger ┆ Dionne ┆ Thomas ┆ Roger │ ├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤ │ Lee James ┆ Lee ┆ James ┆ null │ ├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤ │ Lee James ┆ Lee ┆ James ┆ null │ ├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤ │ Latella Domenic C. ┆ Latella ┆ Domenic ┆ C. │ ├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤ │ Trumpauska Arvydas ┆ Trumpauska ┆ Arvydas ┆ null │ └─────────────────────┴────────────┴───────────────────────┴────────────────────────┘
I’ve filled the null
values with an empty string ""
, but you can choose whatever value you need.