Как это сделать и почему не заполняются нулевые значения в столбце? Вероятно, это можно сделать с помощью pl.col(c).forward_fill().backward_fill(), но что, если я хочу, чтобы было заполнено только одно поле?
df = df.with_columns( *[ pl.col(c).struct.with_fields( pl.field("a").forward_fill().backward_fill(), pl.field("b").forward_fill().backward_fill(), ) for c in ["df1", "df2"] ] )
print(df.collect()) [/code] В выводе появляются нулевые значения. Я ожидал бы, что они будут заполнены вперед и назад, но это не так. [code]┌─────────────────────┬───────────┬───────────┐ │ dt ┆ df1 ┆ df2 │ │ --- ┆ --- ┆ --- │ │ datetime[μs] ┆ struct[2] ┆ struct[2] │ ╞═════════════════════╪═══════════╪═══════════╡ │ 2024-08-02 00:00:00 ┆ {0.2,-1} ┆ null │ │ 2024-08-29 00:00:00 ┆ null ┆ {100,1} │ │ 2024-08-30 00:00:00 ┆ {0.1,0} ┆ {120,-2} │ │ 2024-09-02 00:00:00 ┆ null ┆ {-80,0} │ │ 2024-09-03 00:00:00 ┆ {0.3,2} ┆ {20,0} │ │ 2024-09-04 00:00:00 ┆ {0.1,1} ┆ null │ └─────────────────────┴───────────┴───────────┘ [/code] Я ожидал такого результата: [code]┌─────────────────────┬───────────┬───────────┐ │ dt ┆ df1 ┆ df2 │ │ --- ┆ --- ┆ --- │ │ datetime[μs] ┆ struct[2] ┆ struct[2] │ ╞═════════════════════╪═══════════╪═══════════╡ │ 2024-08-02 00:00:00 ┆ {0.2,-1} ┆ {100,1} │ │ 2024-08-29 00:00:00 ┆ {0.2,-1} ┆ {100,1} │ │ 2024-08-30 00:00:00 ┆ {0.1,0} ┆ {120,-2} │ │ 2024-09-02 00:00:00 ┆ {0.1,0} ┆ {-80,0} │ │ 2024-09-03 00:00:00 ┆ {0.3,2} ┆ {20,0} │ │ 2024-09-04 00:00:00 ┆ {0.1,1} ┆ {20,0} │ └─────────────────────┴───────────┴───────────┘ [/code] Как это сделать и почему не заполняются нулевые значения в столбце? Вероятно, это можно сделать с помощью pl.col(c).forward_fill().backward_fill(), но что, если я хочу, чтобы было заполнено только одно поле?