首页 >后端开发 >Python教程 >如何对 Pandas DataFrame 中的连续值进行分组?

如何对 Pandas DataFrame 中的连续值进行分组?

DDD
DDD原创
2024-11-30 06:47:10185浏览

How to Group Consecutive Values in a Pandas DataFrame?

对 Pandas DataFrame 中的连续值进行分组

在数据分析中,我们经常会遇到数据是有序的,需要对连续值进行分组的情况价值观在一起。此任务可以使用自定义分组技术在 pandas 中实现。

假设我们有一个 DataFrame,其中包含名为“a”的列,其中包含以下值:

[1, 1, -1, 1, -1, -1]

我们的目标是将这些值分组值到连续的块中,如下所示:

[1,1] [-1] [1] [-1, -1]

为了实现这一点,我们可以采用以下方法步骤:

  1. 创建自定义系列:我们使用 ne 和 shift 函数创建一个新系列。此 Series 返回一个布尔值,指示当前值是否与之前的值不同。
  2. 使用 Series 进行分组: 我们将自定义 Series 传递给 groupby 函数。这将按连续块对数据进行分组。
  3. 迭代分组数据:我们迭代分组数据并打印索引、分组 DataFrame 以及每个组的“a”列。

这是实现这些的代码步骤:

import pandas as pd

df = pd.DataFrame({'a': [1, 1, -1, 1, -1, -1]})
print(df)

custom_series = df['a'].ne(df['a'].shift()).cumsum()
print(custom_series)

for i, g in df.groupby(custom_series):
    print(i)
    print(g)
    print(g.a.tolist())

这将输出所需的分组:

1
   a
0  1
1  1
[1, 1]
2
   a
2 -1
[-1]
3
   a
3  1
[1]
4
   a
4 -1
5 -1
[-1, -1]

以上是如何对 Pandas DataFrame 中的连续值进行分组?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn