小编use*_*827的帖子

在numpy 2D数组中重新分配多余的值

我有以下numpy随机2D数组:

np.random.rand(30, 20)
Run Code Online (Sandbox Code Playgroud)

我想迭代数组中的每个网格单元格.如果网格单元的值> 0.6,那么我想将多余的分配给其直接的8个相邻单元(在角网格单元的情况下,相邻单元的数量将更少).

应根据2个用户选择的规则之一重新分配超出部分:

  1. 在8个邻居之间
  2. 与每个邻居中的值成比例,即具有较高值的​​邻居变得更高

有没有办法在numpy不诉诸for循环的情况下完成此操作?

python numpy vectorization

9
推荐指数
1
解决办法
714
查看次数

从netcdf文件获取每月的每小时平均值

我有一个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

python netcdf xarray

9
推荐指数
3
解决办法
935
查看次数

从pandas中的列中提取单个值

关于提取单个列值,我有一个简单的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.我如何得到它?

python pandas

8
推荐指数
2
解决办法
8922
查看次数

将年份和年份转换为熊猫的日期时间索引

我有这个人.数据帧:

 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作为年份.我该如何解决这个问题?

python pandas

8
推荐指数
3
解决办法
4702
查看次数

使用管道表达pandas子集

我有一个像我这样的子集的数据框:

   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)

python pipe pandas

8
推荐指数
1
解决办法
2296
查看次数

pandas数据帧中的不可用类型错误

我有这个人.熊猫数据帧:

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)

我该如何解决?我只想得到第一排

python pandas

8
推荐指数
2
解决办法
9819
查看次数

使用带有numba的python类型提示

来自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类型提示(如果提供)?

python types numba

8
推荐指数
1
解决办法
823
查看次数

使用日期时间索引和列中的随机值创建pandas数据框

如何使用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)

我该如何从这里开始?

python pandas

8
推荐指数
3
解决办法
2万
查看次数

使用seaborn在python中绘制3列热图

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)

但是,这不起作用.还有其他方法吗?

python matplotlib heatmap pandas seaborn

8
推荐指数
2
解决办法
4195
查看次数

使用python数据集访问和关闭postgres数据库的最佳方法

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?

python postgresql dataset

8
推荐指数
1
解决办法
1009
查看次数