如何合并下一行'从当前行开始以Python结束

发布于 2025-01-09 01:01:29 字数 855 浏览 1 评论 0原文

例如,如果我有一个看起来像这样的 DataFrame

在此处输入图像描述

对于相同的 id 和类别,我想仅保留第一个开始和最后一个结束编号,并消除中间的编号。例如,对于第 0 行和第 1 行,由于它们的 id 都是 A 并且 category 都是 Cat_1,因此start 将为 1end 将为 3。 预期输出如下所示:

在此处输入图像描述

请随意使用以下代码来探索:

import pandas as pd
data = {'id':  ['A','A','A', 'B', 'B', 'C' , 'D'],
        'start': [1,2,3,4,5,6,7],
        'end': [2,3,4,5,6,7,8],
        'Category':['Cat_1', 'Cat_1', 'Cat_2' , 'Cat_3', 'Cat_3', 'Cat_3', 'Cat_3']
        }

df = pd.DataFrame(data)

For example if I have a DataFrame that looks like this

enter image description here

For the same id and Category, I would like to keep only the first start and last end number and eliminate the middle ones. For example, for row 0 and 1, since their id are both A and category are both Cat_1, the start would be 1 and end would be 3.
The expected output would look like this:

enter image description here

Feel free to use the following code to explore:

import pandas as pd
data = {'id':  ['A','A','A', 'B', 'B', 'C' , 'D'],
        'start': [1,2,3,4,5,6,7],
        'end': [2,3,4,5,6,7,8],
        'Category':['Cat_1', 'Cat_1', 'Cat_2' , 'Cat_3', 'Cat_3', 'Cat_3', 'Cat_3']
        }

df = pd.DataFrame(data)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

陌路终见情 2025-01-16 01:01:29

您可以使用 groupby + agg 来调用 first 位于“start”和 最后关于“结束”:

out = df.groupby(['id','Category'], as_index=False).agg({'start':'first', 'end':'last'})

输出:

  id Category  start  end
0  A    Cat_1      1    3
1  A    Cat_2      3    4
2  B    Cat_3      4    6
3  C    Cat_3      6    7
4  D    Cat_3      7    8

You could use groupby + agg where you call first on "start" and last on "end":

out = df.groupby(['id','Category'], as_index=False).agg({'start':'first', 'end':'last'})

Output:

  id Category  start  end
0  A    Cat_1      1    3
1  A    Cat_2      3    4
2  B    Cat_3      4    6
3  C    Cat_3      6    7
4  D    Cat_3      7    8
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文