我一直在写一些有多个变量的xarray.Datasets.目前,为了保持大小可管理,我指定了编码,例如zlib,但需要根据变量应用于变量(dataArray).
将相同的编码参数应用于所有变量的好方法是什么?例如
<xarray.Dataset>
Dimensions: (lat: 1440, lon: 2880)
Coordinates:
* lat (lat) float64 -90.0 -89.88 -89.75 -89.62 -89.5 -89.38 -89.25 ...
* lon (lon) float64 -180.0 -179.9 -179.8 -179.6 -179.5 -179.4 -179.2 ...
Data variables:
a1 (lat, lon) float64 nan nan nan nan nan nan nan nan 0.0 ...
b (lat, lon) float64 nan nan nan nan nan nan 0.0 0.0 0.0 ...
c (lat, lon) float64 nan nan nan nan nan nan nan nan 0.0 ...
d (lat, lon) …Run Code Online (Sandbox Code Playgroud) 我希望创建一个嵌套的for循环来处理一些文件.我已经广泛寻找解决方案,并找到了许多相似的版本,但由于这是我第一次将方法组合起来做我想做的事情.
基本上 - 我想要一个FOR/L循环,循环遍历一系列从001到500的填充数字.
我知道我可以指定一个范围(1,1,500),但显然不是(001,001,500).如何添加00,然后当%% a> 9时,只是0?我想这可能是一种刺痛,但也许还有另一种方式?
我希望它的代码(显然是错误的):
@echo off
for %%a in (001,001,500) do (
echo %%a
for %%s in (control scenario) do (
echo %%s
svic_ensemble.exe 28009_Trent_at_Colwick.cal Trent_%%s_%%a.txt 28009_Trent_at_Colwick.txt Trent_%%s_%%a.out
)
)
pause
Run Code Online (Sandbox Code Playgroud)
非常感谢
埃德
所以我有3个netcdf4文件(每个约90 MB),我想使用包xarray连接.每个文件有一个变量(dis),以0.5度分辨率(lat,lon)表示365天(时间).我的目标是连接三个文件,使得我们的时间序列为1095天(3年).
每个文件(2007年,2008年,2009年)都有:1个变量:dis 3坐标:time,lat,lon ......就这样
<xarray.Dataset>
Dimensions: (lat: 360, lon: 720, time: 365)
Coordinates:
* lon (lon) float32 -179.75 -179.25 -178.75 -178.25 -177.75 -177.25 ...
* lat (lat) float32 89.75 89.25 88.75 88.25 87.75 87.25 86.75 86.25 ...
* time (time) datetime64[ns] 2007-01-01 2007-01-02 2007-01-03 ...
Data variables:
dis (time, lat, lon) float64 nan nan nan nan nan nan nan nan nan ...
Run Code Online (Sandbox Code Playgroud)
我得到它们导入并使用concat模块连接,我认为成功.在这种情况下,模块从filestrF中读出3个netcdf文件名
flist1 = [1,2,3]
ds_new = xr.concat([xr.open_dataset(filestrF[0,1,1,f]) for f in flist1],dim='time')
Run Code Online (Sandbox Code Playgroud)
现在显示新数据集的新细节:
Dimensions: (lat: 360, lon: 720, …Run Code Online (Sandbox Code Playgroud) 我正在使用熊猫,并希望选择数据子集并将其应用于其他列。例如
我现在使用.isnull()和可以正常工作.notnull()。例如
df = pd.DataFrame({'A' : pd.Series(np.random.randn(4)),
'B' : pd.Series(np.nan),
'C' : pd.Series(['yes','yes','no','maybe'])})
df['D']=''
df
Out[44]:
A B C D
0 0.516752 NaN yes
1 -0.513194 NaN yes
2 0.861617 NaN no
3 -0.026287 NaN maybe
# Now try the first conditional expression
df['D'][df['A'].notnull() & df['B'].isnull()] \
= df['A'][df['A'].notnull() & df['B'].isnull()]
df
Out[46]:
A B C D
0 0.516752 NaN yes 0.516752
1 -0.513194 NaN yes -0.513194
2 0.861617 NaN no 0.861617
3 …Run Code Online (Sandbox Code Playgroud)