Python:条件减法

2024-05-16 03:00:38 发布

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

我的目标是根据每个层的深度[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

有两个条件需要考虑:

  1. 如果没有id深度较小的层,则该深度等于厚度
  2. 如果存在深度较小的层,则必须从当前深度中减去以前的深度以计算厚度

结果应该如下所示:

   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循环,但不幸的是,我一直无法让它工作

任何帮助都将不胜感激


Tags: 数据id目标dataframenp条件pdprint
1条回答
网友
1楼 · 发布于 2024-05-16 03:00:38

如果值按组排序,则使用^{}替换为^{}替换为原始值:

dfe['thickness [m]s'] = dfe.groupby('id')['depth [m]'].diff().fillna(dfe['depth [m]'])
print (dfe)
   id  depth [m]  thickness [m]s
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

相关问题 更多 >