问题描述
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 (将#修改为@)