Я хотел бы знать, есть ли элегантный способ суммирования pd.DataFrame с точно такими же индексами и столбцами с использованием пакета Xarray.
Проблема
import numpy as np
import pandas as pd
import xarray as xr
np.random.seed(123)
pdts = pd.Index(["AAPL", "GOOG", "FB"], name="RIC")
dates = pd.date_range("20200601", "20200620", name="Date")
field_A = pd.DataFrame(np.random.rand(dates.size, pdts.size), index=dates, columns=pdts)
field_B = pd.DataFrame(np.random.rand(dates.size, pdts.size), index=dates, columns=pdts)
field_C = pd.DataFrame(np.random.rand(dates.size, pdts.size), index=dates, columns=pdts)
df_dict = {
"A": field_A,
"B": field_B,
"C": field_C,
}
Что бы я Я хотел бы получить res = df_dict["A"] + df_dict["B"] + df_dict["C"]
с помощью пакета Xarray, который я только начал изучать. Я знаю, что есть решения, использующие Pandas, например:
res = pd.DataFrame(np.zeros((dates.size, pdts.size)), index=dates, columns=pdts)
for k, v in df_dict.items():
res += v
Попытки
То, что я пробовал в Xarray:
Поскольку класс Dataset выглядел как диктат данных , Я думал, что наиболее простой вариант будет следующим:
ds = xr.Dataset(df_dict)
Однако при выполнении ds.sum()
он не позволит мне суммировать различные переменные данных, результат будет либо суммировать по «Дате», либо сумма по «RI C» или по обоим, но выполняется для каждой переменной данных.
Есть идеи? Заранее спасибо.