如何提取子集子集中具有最大行值的数据帧的子集?

被卡住了

我有一个数据框(df),其中包含沿河流的数据点,其中每个流域(流域 ID)包含多条河流(河流 ID),并且每条河流沿其长度(长度)都有点。它看起来像这样(简化):

Basin_ID River_ID 长度
1 1 5
1 1 10
1 2 5
1 2 7
1 2 12
1 3 5
2 1 5
2 1 10
2 1 12
2 1 14
2 2 5

在本例中,流域 1 有 3 条河流,流域 2 有两条河流。实际表有 600K 行和 12 列其他河流数据。

目标:我想为 df 中的每个独特流域提取单个最长的河流子集,以便最终得到如下结果:

Basin_ID River_ID 长度
1 2 5
1 2 7
1 2 12
2 1 5
2 1 10
2 1 12
2 1 14

我认为我需要做类似的事情

res = df.groupby('Basin_ID').apply(lambda x: ...

但是因为我需要按 Basin_ID 和 River_ID 进行分组,所以我发现很难想出一个可以正常工作的表达式。欢迎任何建议,谢谢!

丹尼尔·威格尔
df2=df.assign(maxRiverLength=df.groupby('Basin_ID').transform(lambda x: x.max())['Length']).set_index(['Basin_ID','River_ID'])
df.set_index(['Basin_ID','River_ID']).loc[df2[df2['Length']==df2['maxRiverLength']].index].reset_index()

可能有更聪明的方法,但我分两步复制了您的输出:

  • 我首先创建一个包含每个 Basin_ID 的 maxRiverLength 的新列,并将其分配给我将索引设置为 Basin_ID 和 River_ID 的 df2:

  • 然后,我采用原始 df,将索引也设置为 Basin_ID 和 River_ID,并通过具有“Length”=“maxRiverLength”的 df2 的索引进行过滤

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何从包含以下因素的数据帧子集中获取最小值和最大值

如何清除 R 数据帧子集中的值?

Pandas:具有多个条件的子集子集

具有逻辑值矩阵的子集数据帧

如何从数据框的子集中删除值

数据集子集中的 R dplyr slice min

特定数据集子集

R:在数据帧的子集中查找列的最大值

如何从数据帧子集中随机选择元素?

如何删除数据帧子集中的行

在数据帧的子集中查找单词

如何从数据集中任意提取特定的图像子集?

R:子集/组数据帧的最大值?

SQL查询子集中的最大值

在Pandas数据框中的列子集中查找具有非零值的行

如何将数据帧从第一行子集到列中的最大值?

如何从行的子集中选择具有最小值的列的行?

Pandas 数据帧:从数据帧的子集中获取值对

我有一个从数据帧中提取的子集矩阵,如何获得相应的行名?

数据帧子集

如何计算从数据子集中的列的均值

根据列的Count值的数据帧子集

将数据集子集仅包含R中具有2个或多个唯一子组的组

根据其他两个数据帧的唯一值提取数据帧的子集

如何在保持数据类型的同时将多个timedate数据放入数据帧的子集中?

查找具有某些缺失值的数据框列的子集

数据帧子集中的第一条记录

根据数据帧子集中的多个参数计算新变量

在 R 中:提取数据帧中的部分行(在列的子集中)并堆叠到新的更长的数据帧中