Код: Выделить всё
df = pl.DataFrame({'last_name':[None,'mallesh','bhavik'],
'first_name':['a','b','c'],
'middle_name_or_initial':['aa','bb','cc']})
Код: Выделить всё
shape: (3, 3)
┌───────────┬────────────┬────────────────────────┐
│ last_name ┆ first_name ┆ middle_name_or_initial │
│ --- ┆ --- ┆ --- │
│ str ┆ str ┆ str │
╞═══════════╪════════════╪════════════════════════╡
│ null ┆ a ┆ aa │
│ mallesh ┆ b ┆ bb │
│ bhavik ┆ c ┆ cc │
└───────────┴────────────┴────────────────────────┘
В этом случае last_name должно принимать значение значение из first_name, first_name должно принимать значение из middle_name, а middle_name должно быть NULL.
ожидаемый результат:
Код: Выделить всё
shape: (3, 3)
┌───────────┬────────────┬────────────────────────┐
│ last_name ┆ first_name ┆ middle_name_or_initial │
│ --- ┆ --- ┆ --- │
│ str ┆ str ┆ str │
╞═══════════╪════════════╪════════════════════════╡
│ a ┆ aa ┆ null │
│ mallesh ┆ b ┆ bb │
│ bhavik ┆ c ┆ cc │
└───────────┴────────────┴────────────────────────┘
Код: Выделить всё
df.with_columns(
pl.when((pl.col('first_name').is_not_null()) & (pl.col('middle_name_or_initial').is_not_null()) & (pl.col('last_name').is_null()))
.then(pl.col('first_name').alias('last_name')).otherwise(pl.col('last_name').alias('first_name')),
pl.when((pl.col('first_name').is_not_null()) & (pl.col('middle_name_or_initial').is_not_null()) & (pl.col('last_name').is_null()))
.then(pl.col('middle_name_or_initial').alias('first_name')).alias('middle_name_or_initial')
)
Подробнее здесь: https://stackoverflow.com/questions/737 ... hon-polars