Как я могу добиться того же результата, не выполняя избыточные вычисления ниже:
Код: Выделить всё
y_da.y * x_da.x/x_da.xЯ пробовал: выравнивать, транслировать, объединять методы, но безуспешно...
Код: Выделить всё
import xarray as xr
import pandas as pd
x_da = pd.DataFrame({
'reporting_date': pd.to_datetime([
'2024-01-01','2024-02-01','2024-03-01',
'2024-01-01','2024-02-01','2024-03-01',
'2024-01-01','2024-02-01','2024-03-01',
]),
'user': [
'A','A','A',
'B','B','B',
'C','C','C',
],
'rating': [
1,1,1,
1,2,3,
3,2,1
],
'x': [
10,20,30,
20,30,40,
30,40,50
]
})
y_da = pd.DataFrame({
'rating': [
1,1,1,1,1,1,
2,2,2,2,2,2,
3,3,3,3,3,3
],
'horizon': [
1,2,3,4,5,6,
1,2,3,4,5,6,
1,2,3,4,5,6
],
'y': [
0.1,0.2,0.3,0.4,0.5,0.6,
0.2,0.3,0.4,0.5,0.6,0.7,
0.3,0.4,0.5,0.6,0.7,0.8,
]
})
x_da = x_da.set_index(['user','reporting_date','rating']).to_xarray()
y_da = y_da.set_index(['rating','horizon']).to_xarray()
ds = x_da.assign(y=y_da.y * x_da.x/x_da.x)
display(ds.sel({'user':'A'}).y)

Подробнее здесь: https://stackoverflow.com/questions/790 ... alculation