gpt4 book ai didi

Python Pandas : Sort and group by, 然后将第二列的两个连续行相加以获得第三列的特定值

转载 作者:行者123 更新时间:2023-11-28 22:17:01 26 4
gpt4 key购买 nike

我有这个数据框:

    Group   Turn    Name
0 G1 1 Maria
1 G1 2 Sam
2 G1 2 Sara
3 G1 3 Maria
4 G1 4 Mark
5 G1 5 Maria

6 G2 2 Maria
7 G2 1 Ahmad

8 G3 1 Maria
9 G3 2 David

我想根据“group”列的值对我的数据进行分组,并根据它们的“Turn”进行排序。因此,每组的轮次都是排序的。

然后我想对名称为“Maria”的行和其后一行的每组中“Turn”列的值求和。如果 Maria 是小组中的最后一个回合,则仅求和 轮到玛丽亚了。

So the result looks like this:
Group Name Sum
G1 Maria 3
G1 Maria 7
G1 Maria 5
G2 Maria 2
G3 Maria 3

我尝试了 group by、apply 和 shift,但没有一个能给我我正在寻找的最终结果。

 df = df.groupby('group').apply(lambda x: x.sort_values('Turn'))

有人可以帮帮我吗?

最佳答案

您可以使用 ffilllimit

df=df.sort_values(['Group','Turn'])
df[df.Name.where(df.Name=='Maria').groupby(df['Group']).ffill(limit=1).eq('Maria')].set_index('Group').Turn.sum(level=0)
Out[272]:
Group
G1 5
G2 3
G3 3
Name: Turn, dtype: int64

关于Python Pandas : Sort and group by, 然后将第二列的两个连续行相加以获得第三列的特定值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51729647/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com