Я пытаюсь понять, есть ли какой-нибудь способ сделать «когда… тогда… иначе» в полярах и назначить несколько столбцов. У меня есть набор данных elo с миллионами строк, в котором я хочу присвоить текущее значение elo чему-либо большему, чем дата.
В пандах я бы сделал это
elo_df.loc[(id, date:)), ["elo", "true_skill_mu", "true_skill_sigma"]] = elo, true_skill_mu, true_skill_sigma
Приведенный ниже код работает, но очень медленно. Я надеюсь, что смогу увеличить скорость как минимум в 3 раза, запустив фильтр один раз. Кроме того, если у вас есть предложения, как сделать это быстрее, дайте мне знать.
elo_df = elo_df.with_columns([pl.when((pl.col("id") == col) & (pl.col("date") >= date)).then(pl.lit(new_rating)).otherwise(pl.col("elo")).alias("elo"),
pl.when((pl.col("id") == col) & (pl.col("date") >= date)).then(pl.lit(new_mu)).otherwise(pl.col("true_skill_mu")).alias("true_skill_mu"),
pl.when((pl.col("id") == col) & (pl.col("date") >= date)).then(pl.lit(new_sigma)).otherwise(pl.col("true_skill_sigma")).alias("true_skill_sigma")]
Подробнее здесь: https://stackoverflow.com/questions/731 ... le-columns