pd.cut binning 对于部分数值积分无法正常工作

问题描述

Stack 上有一个类似的问题,但一直没有人回答:When using cut in a pandas dataframe to bin it,why is the binning not properly done?

我有一个数据集,我需要对曲线下的面积进行积分,但我不是一次对曲线下的整个面积进行积分,而是以 5m 的指定间隔对部分区域进行积分。即0-5m、5-10m、10-15m等曲线下的面积

但是,似乎我的代码正在跳过间隔的最后一个点和下一个间隔的第一个点之间的区域。

Here is a subset of my dataframe:

SITE    XSNO   XDIST   VERT SUB    YEAR      X     Z SOURCE     EW  \
6749  LOL  LOL006    30.0 -159.0  LI  1978.0   0.30  0.00     JF  False   
6750  LOL  LOL006    98.0 -155.0  LI  1978.0   0.98  0.04     JF  False   
6751  LOL  LOL006   148.0 -155.0  OD  1978.0   1.48  0.04     JF  False   
6752  LOL  LOL006   196.0 -133.0  OD  1978.0   1.96  0.26     JF  False   
6753  LOL  LOL006   222.0  -92.0  OD  1978.0   2.22  0.67     JF  False   
6754  LOL  LOL006   242.0 -191.0  OD  1978.0   2.42 -0.32     JF  False   
6755  LOL  LOL006   320.0 -246.0  LI  1978.0   3.20 -0.87     JF  False   
6756  LOL  LOL006   383.0 -256.0  LI  1978.0   3.83 -0.97     JF  False   
6757  LOL  LOL006   478.0 -262.0  LI  1978.0   4.78 -1.03     JF  False   
6758  LOL  LOL006   558.0 -269.0  LI  1978.0   5.58 -1.10     JF  False   
6759  LOL  LOL006   610.0 -271.0  LI  1978.0   6.10 -1.12     JF  False   
6760  LOL  LOL006   670.0 -264.0  LI  1978.0   6.70 -1.05     JF  False   
6761  LOL  LOL006   698.0 -308.0  BR  1978.0   6.98 -1.49     JF  False 


max_x = max (df.X)
interval_range = pd.interval_range(start = 0,end = max_x + 5,freq=5,closed = 'left')
df['bins'] = pd.cut(df.X,bins = interval_range)

area = df.groupby(['bins','YEAR']).apply(lambda i: integrate.simps(i.Y,x = i.X))

对于数据框的这个子集,我的代码跳过了 X = 4.78 和 X = 5.58 之间的区域。我需要找到一种方法将其合并到我的结果中,我无法将其概念化。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...