【发布时间】:2020-12-26 17:20:25
【问题描述】:
我的目标是根据每一层的深度 [m] 计算每个 id 的每一层的厚度 [m]。下面是一个和我类似的数据框。
eID = [1,1,1,2,2,3,3,3,3]
depth = [0.35,1.5,3.0,0.75,2.0,0.2,0.8,1.7,3.5]
dictex ={"id":eID,"depth [m]":depth}
dfe = pd.DataFrame(dictex)
print(dfe)
id depth [m]
0 1 0.35
1 1 1.50
2 1 3.00
3 2 0.75
4 2 2.00
5 3 0.20
6 3 0.80
7 3 1.70
8 3 3.50
有两个条件需要考虑:
- 如果 id 没有更小深度的层,则该深度等于厚度。
- 如果存在深度较小的层,则必须从当前深度中减去之前的深度来计算厚度。
结果应该是这样的:
id depth [m] thickness [m]
0 1 0.35 0.35
1 1 1.50 1.15
2 1 3.00 1.50
3 2 0.75 0.75
4 2 2.00 1.25
5 3 0.20 0.20
6 3 0.80 0.60
7 3 1.70 0.90
8 3 3.50 1.80
我尝试过使用“groupby”、“np.where”和带有 if 条件的 for 循环,但不幸的是我无法让它工作。
任何帮助将不胜感激!
【问题讨论】:
-
你能分享一下你目前尝试过的代码吗?
标签: python pandas conditional-statements