Я пытаюсь создать функцию, которая принимает список столбцов структуры, извлекает два поля и выполняет комбинацию между полями всех значений таких полей. Все в том же контексте. Например, для:
all_combinations = pl.struct(
[
# Extract the [lb, ub] lists for each column
col.map_elements(lambda x: [x['value_decimal_lb'], x['value_decimal_ub']]).alias(f'{col}_list')
for col in [pl.col('value_1'), pl.col('value_2')]
]
).map_elements(
# Compute all combinations
lambda x: [
list(combo) for combo in product(*[x[f'{col}_list'] for col in [pl.col('value_1'), pl.col('value_2')]])
])
print(df.with_columns(all_combinations))
Однако это решение неоптимально, и мне нужно заранее знать return_dtype столбца, который может отличаться в зависимости от входных столбцов.
Можете ли вы предложить, как реализовать это решение без использования Map_elements?
Я пытаюсь создать функцию, которая принимает список столбцов структуры, извлекает два поля и выполняет комбинацию между полями всех значений таких полей. Все в том же контексте. Например, для: [code]df = pl.DataFrame({ 'cases': ['case_1', 'case_2'], 'value_1': [ {'value_decimal': 22.5, 'value_decimal_lb': 22.0, 'value_decimal_ub': 23.0}, {'value_decimal': 23.0, 'value_decimal_lb': 22.5, 'value_decimal_ub': 23.5} ], 'value_2': [ {'value_decimal': 5.0, 'value_decimal_lb': 5.0, 'value_decimal_ub': 5.0}, {'value_decimal': 5.0, 'value_decimal_lb': 6.0, 'value_decimal_ub': 5.0} ] })
[/code] Этого я могу добиться с помощью вложения map_elements(): [code]all_combinations = pl.struct( [ # Extract the [lb, ub] lists for each column col.map_elements(lambda x: [x['value_decimal_lb'], x['value_decimal_ub']]).alias(f'{col}_list') for col in [pl.col('value_1'), pl.col('value_2')] ] ).map_elements( # Compute all combinations lambda x: [ list(combo) for combo in product(*[x[f'{col}_list'] for col in [pl.col('value_1'), pl.col('value_2')]]) ])
print(df.with_columns(all_combinations)) [/code] Однако это решение неоптимально, и мне нужно заранее знать return_dtype столбца, который может отличаться в зависимости от входных столбцов. Можете ли вы предложить, как реализовать это решение без использования Map_elements?