Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/346.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/sharepoint/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何加快xarray重采样(比pandas重采样慢得多)_Python_Pandas_Python Xarray - Fatal编程技术网

Python 如何加快xarray重采样(比pandas重采样慢得多)

Python 如何加快xarray重采样(比pandas重采样慢得多),python,pandas,python-xarray,Python,Pandas,Python Xarray,这里是一个MWE,用于在xarray与pandas中对时间序列进行重新采样。10Min重采样在xarray中需要6.8秒,在pandas中需要0.003秒。有没有办法让大熊猫在沙雷加速?熊猫的重采样似乎与周期无关,而沙雷则随周期而变化 将numpy导入为np 将xarray作为xr导入 作为pd进口熊猫 导入时间 def制造商(频率): 尺寸=100000 时间=局部放电日期范围('2000-01-01',周期=大小,频率=频率) ds=xr.Dataset({ “foo”:xr.DataArr

这里是一个MWE,用于在
xarray
pandas
中对时间序列进行重新采样。
10Min
重采样在
xarray
中需要6.8秒,在
pandas
中需要0.003秒。有没有办法让大熊猫在沙雷加速?熊猫的重采样似乎与周期无关,而沙雷则随周期而变化

将numpy导入为np
将xarray作为xr导入
作为pd进口熊猫
导入时间
def制造商(频率):
尺寸=100000
时间=局部放电日期范围('2000-01-01',周期=大小,频率=频率)
ds=xr.Dataset({
“foo”:xr.DataArray(
数据=np.随机。随机(大小),
dims=[“时间”],
coords={'time':times}
)})
返回ds
对于f in[“1s”、“1Min”、“10Min”]:
ds=制造(f)
开始=时间。时间()
ds_r=ds.resample({'time':“1H”}).mean()
打印(f,'xr',str(time.time()-start))
开始=时间。时间()
ds_r=ds.to_dataframe().重采样(“1H”).平均值()
打印(f,'pd',str(time.time()-start))

根据
xarray
这是一个实施问题。解决方案是在其他代码中进行重采样(实际上是
GroupBy
)。我的解决方案是使用快速熊猫重采样,然后重建xarray数据集:

df_h = ds.to_dataframe().resample("1H").mean()  # what we want (quickly), but in Pandas form
vals = [xr.DataArray(data=df_h[c], dims=['time'], coords={'time':df_h.index}, attrs=ds[c].attrs) for c in df_h.columns]
ds_h = xr.Dataset(dict(zip(df_h.columns,vals)), attrs=ds.attrs)

目前,还将xarray作为bug提交:
df_h = ds.to_dataframe().resample("1H").mean()  # what we want (quickly), but in Pandas form
vals = [xr.DataArray(data=df_h[c], dims=['time'], coords={'time':df_h.index}, attrs=ds[c].attrs) for c in df_h.columns]
ds_h = xr.Dataset(dict(zip(df_h.columns,vals)), attrs=ds.attrs)