pd.cut装箱不适用于部分数值积分

2024-04-28 17:38:47 发布

您现在位置:Python中文网/ 问答频道 /正文

堆栈上有一个类似的问题,但从未得到回答: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之间的区域。我需要找到一种方法将其融入到我的结果中,我在概念化上有困难


Tags: false区域dataframedfrangeli曲线max