python - 带有 Xarray 的字典中 pandas DataFrame 的总和
问题描述
我想知道是否有一种优雅的方法可以使用 Xarray 包对具有完全相同索引和列的 pd.DataFrame 进行求和。
问题
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()
它时,我不允许我对不同的数据变量求和,结果要么是对“日期”求和,要么是对“RIC”求和,或者对两者求和,但对每个数据变量执行。
任何想法 ?提前致谢。
解决方案
看起来像这样做的一种方法是ds.to_array().sum("variable")
推荐阅读
- css - 从 string.Split 中排除单词
- asp.net-core - ef core 可能会更新很多额外的文件
- c - 使用 waitpid() 函数时,第二个 wstatus 值填充为 11 或 139
- homebrew - 我们如何减少 homebrew-cask 和 homebrew-core 文件夹的大小?
- r - 在保留注释的同时解析 R 表达式
- php - 注意:尝试访问第 25 行 C:\xampp\htdocs\twitter\core\classes\follow.php 中 bool 类型值的数组偏移量
- c# - application.System.InvalidOperationException:无法解析类型“Projects.Models.DatabaseContext”的服务
- javascript - Uncaught TypeError: _this.props.data.map is not a function, Map error to render Component
- javascript - 为什么结果与我预期的不同?
- f# - F#:究竟应该如何使用 ToString?