【发布时间】:2021-08-08 22:58:35
【问题描述】:
这篇文章是这个问题here的延续。
我有一个数据框,其中包含名为“海拔”、“距离”、“坡度”的三列。 'Slope' 列应使用前两列 'Altitude'、'Distance' 计算。
首先,目的是使用解释为的条件计算“坡度”:部署了一个条件函数,从“距离”变量的顶列开始,并累加(求和)值,直到它们的总和更大或等于 10 (>=10)。如果此条件为真,则使用给定公式计算“斜率”:Slope=(Differential of 'Altitude')/(sum(Distance))。
“距离”的总和从第一个值开始,直到“距离”的总和 >= 10 的索引。此外,差分“高度”表示:每个分区中的 Last value of Altitude - First value of Altitude。
我试着画一个图来更好地说明。
[![在此处输入图片描述][1]][1]
以下代码(由 Tim Roberts 编写)是最初所做的。它使用“KM_mean”公式。我希望使用我上面的解释在这篇文章中更正和修改它:
data = [
[11.2, 0],
[11.2, 3.018],
[10.9, 4.18],
[10.1, 4.873],
[9.9 , 5.499],
[9.4 , 5.923],
[9.2 , 6.415],
[8.5 , 1.063],
[8.4 , 1.667],
[7.9 , 3.114]
]
df = pd.DataFrame( data, columns=['Altitude','Distance'])
print( df )
s=[]
sumdist = 0
sumalt = 0
cntx = 0
for i in list(range(df.shape[0])):
sumdist += df.loc[i,'Distance']
sumalt += df.loc[i,'Altitude']
cntx += 1
if sumdist >= 10:
KM_mean = sumalt / cntx / sumdist
s.append(KM_mean)
sumdist = sumalt = 0
cntx = 0
if cntx:
s.append( sumalt / cntx / sumdist )
print(s)
[1]: https://i.stack.imgur.com/OPdXw.jpg
【问题讨论】:
-
嗨@Allin 请编辑您的帖子以使其更易于理解。上一个问题和图片的链接也没有出现。
标签: python pandas dataframe numpy