我有以下numpy随机2D数组:
np.random.rand(30, 20)
Run Code Online (Sandbox Code Playgroud)
我想迭代数组中的每个网格单元格.如果网格单元的值> 0.6,那么我想将多余的分配给其直接的8个相邻单元(在角网格单元的情况下,相邻单元的数量将更少).
应根据2个用户选择的规则之一重新分配超出部分:
有没有办法在numpy不诉诸for循环的情况下完成此操作?
我有一个netCDF文件,其时间维度包含2小时的数据.我希望平均每小时获得每小时的平均时数.我试过这个:
import xarray as xr
ds = xr.open_mfdataset('ecmwf_usa_2015.nc')
ds.groupby(['time.month', 'time.hour']).mean('time')
Run Code Online (Sandbox Code Playgroud)
但我得到这个错误:
*** TypeError: `group` must be an xarray.DataArray or the name of an xarray variable or dimension
Run Code Online (Sandbox Code Playgroud)
我怎样才能解决这个问题?如果我这样做:
ds.groupby('time.month', 'time.hour').mean('time')
Run Code Online (Sandbox Code Playgroud)
我没有得到错误,但结果的时间维度为12(每个月一个值),而我想要每个月的小时平均值,即每12个月24个值.数据可在此处获取:https://www.dropbox.com/s/yqgg80wn8bjdksy/ecmwf_usa_2015.nc?dl = 0
关于提取单个列值,我有一个简单的pandas问题
df = DataFrame({'A' : [15,56,23,84], 'B' : [10,20,33,25]})
df
A B
0 15 10
1 56 20
2 23 33
3 84 55
x = df[df['A'] == 23]
x
Run Code Online (Sandbox Code Playgroud)
输出
A B
2 23 33
Run Code Online (Sandbox Code Playgroud)
但是,我只想获得B列中的值,即33.我如何得到它?
我有这个人.数据帧:
year doy
2000 49
2000 65
2000 81
2001 97
2001 113
2001 129
2001 145
2001 161
Run Code Online (Sandbox Code Playgroud)
我想为这个数据帧创建一个索引.索引应该是日期时间索引.这是我在做的事情:
df.index = pandas.DatetimeIndex(df['doy'].apply(lambda x: date(2000, 1, 1)+ relativedelta(days=int(x)-1)))
Run Code Online (Sandbox Code Playgroud)
但是,这会创建一个日期时间索引,该索引仅使用2000作为年份.我该如何解决这个问题?
我有一个像我这样的子集的数据框:
a b x y
0 1 2 3 -1
1 2 4 6 -2
2 3 6 6 -3
3 4 8 3 -4
df = df[(df.a >= 2) & (df.b <= 8)]
df = df.groupby(df.x).mean()
Run Code Online (Sandbox Code Playgroud)
如何使用pandas管道运算符表达这一点?
df = (df
.pipe((x.a > 2) & (x.b < 6)
.groupby(df.x)
.apply(lambda x: x.mean())
Run Code Online (Sandbox Code Playgroud) 我有这个人.熊猫数据帧:
df.shape
(86, 245)
Run Code Online (Sandbox Code Playgroud)
但是,当我这样做时:
df[0, :]
Run Code Online (Sandbox Code Playgroud)
我收到错误:
*** TypeError: unhashable type
Run Code Online (Sandbox Code Playgroud)
我该如何解决?我只想得到第一排
来自numba网站:
from numba import jit
@jit
def f(x, y):
# A somewhat trivial example
return x + y
Run Code Online (Sandbox Code Playgroud)
有没有办法让numba使用python类型提示(如果提供)?
如何使用datetime作为索引创建pandas数据框,以及列的随机值.目前,我有这个:
from datetime import datetime, timedelta
date_today = datetime.now()
date_end = date_today + timedelta(7)
df = pd.DataFrame(columns=['test'])
Run Code Online (Sandbox Code Playgroud)
我该如何从这里开始?
v1 v2 yy
15.25 44.34 100.00
83.05 59.78 100.00
96.61 65.09 100.00
100.00 75.47 100.00
100.00 50.00 100.00
100.00 68.87 100.00
100.00 79.35 100.00
100.00 100.00 100.00
100.00 63.21 100.00
100.00 100.00 100.00
100.00 68.87 100.00
0.00 56.52 92.86
10.17 52.83 92.86
23.73 46.23 92.86
Run Code Online (Sandbox Code Playgroud)
在上面的数据框中,我想绘制一个热图,使用v1和v2作为x和y轴,yy作为值.我怎么能在python中做到这一点?我试过seaborn:
df = df.pivot('v1', 'v2', 'yy')
ax = sns.heatmap(df)
Run Code Online (Sandbox Code Playgroud)
但是,这不起作用.还有其他方法吗?
import dataset
from sqlalchemy.pool import NullPool
db = dataset.connect(path_database, engine_kwargs={'poolclass': NullPool})
table_f1 = db['name_table']
# Do operations on table_f1
db.commit()
db.executable.close()
Run Code Online (Sandbox Code Playgroud)
我使用此代码访问postgres数据库,有时写入它.最后,我关闭它.以上代码是访问和关闭它的最佳方式吗?或者,下面的代码更好吗?
import dataset
from sqlalchemy.pool import NullPool
with dataset.connect(path_database, engine_kwargs={'poolclass': NullPool}) as db:
table_f1 = db['name_table']
# Do operations on table_f1
db.commit()
Run Code Online (Sandbox Code Playgroud)
特别是,我想100%确定一旦完成这段代码就没有与postgres数据库的连接.哪个是实现它的更好方法?选项1还是选项2?