Skip to main content
 首页 » 编程设计

python之Pandas groupby 顺序值

2025年05月04日24jiqing9006

我不知道如何调用这个操作,所以我无法用谷歌搜索任何东西,但这是我正在尝试做的:

我有这个数据框:

df = pd.DataFrame({"name": ["A", "B", "B", "B", "A", "A", "B"], "value":[3, 1, 2, 0, 5, 2, 3]}) 
df 
  name  value 
0    A      3 
1    B      1 
2    B      2 
3    B      0 
4    A      5 
5    A      2 
6    B      3 

我想在 df.name 上对其进行分组,并在 df.values 上应用 max 函数,但前提是名称在顺序。所以我想要的结果如下:

df.groupby_sequence("name")["value"].agg(max) 
  name  value 
0    A      3 
1    B      2 
2    A      5 
3    B      3 

知道怎么做吗?

请您参考如下方法:

使用 pandas,当名称逐行更改时,您可以使用 (df.name!=df.name.shift()).cumsum(),它基本上将连续的名称组合在一起:

>>> df.groupby((df.name!=df.name.shift()).cumsum()).max().reset_index(drop=True) 
  name  value 
0    A      3 
1    B      2 
2    A      5 
3    B      3