Сумма pandas DataFrame в dict с Xarray - PullRequest
0 голосов
/ 21 июня 2020

Я хотел бы знать, есть ли элегантный способ суммирования 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» или по обоим, но выполняется для каждой переменной данных.

Есть идеи? Заранее спасибо.

1 Ответ

0 голосов
/ 21 июня 2020

Похоже, это ds.to_array().sum("variable")

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...