pandas 根据先前的值创建组

Posted

技术标签:

【中文标题】pandas 根据先前的值创建组【英文标题】:pandas create groups based on previous value 【发布时间】:2019-10-09 18:12:01 【问题描述】:

我有一个按整数列排序的 DataFrame v1:

   v1
0   1
1   5
2   6
3  12
4  15
5  23
6  24
7  25
8  33

我想像这样对 v1 中的值进行分组:如果值 - prev_value 为此,我想为每个组提供越来越多的数字。

所以我想创建另一个列,v1_group,它将具有输出:

   v1  v1_group
0   1         1 
1   5         1  
2   6         1
3  12         2  # 12 - 6 > 5, new group
4  15         2
5  23         3
6  24         3
7  25         3
8  33         4

我需要对日期时间列执行相同的任务:分组值 if value - prev_value

我知道我可以使用标准 for 循环来解决这个问题。有没有更好的 pandas 方式?

【问题讨论】:

【参考方案1】:

IIUC,

df['v1_group'] = df.v1.diff().ge(5).cumsum() + 1

输出:

   v1  v1_group
0   1         1
1   5         1
2   6         1
3  12         2
4  15         2
5  23         3
6  24         3
7  25         3
8  33         4

【讨论】:

以上是关于pandas 根据先前的值创建组的主要内容,如果未能解决你的问题,请参考以下文章

根据其他列中的值在 python 3 (pandas) 数据框中创建新列

根据 pandas 或 numpy 中某一列的值创建新行

在 pandas 中,如何根据一列中的唯一值创建列,然后根据另一列中的值填充它?

Pandas-DataFrame基础知识点总结

根据先前计算的值计算比率

根据先前的值从表中删除行