📌  相关文章
📜  如何根据 pandas 中的属性 id 找出最大和最小日期 - Python (1)

📅  最后修改于: 2023-12-03 15:38:49.586000             🧑  作者: Mango

如何根据 pandas 中的属性 id 找出最大和最小日期 - Python

在 pandas 中,我们可以使用 groupby 方法将数据集按照一定的规则分组,然后进行聚合操作。在本文中,我们将介绍如何根据 pandas 中的属性 id 找出最大和最小日期。

数据集示例

我们使用如下的数据集进行示例操作:

import pandas as pd

data = {
    'id': [1, 2, 2, 3, 3, 3],
    'date': ['2021-01-01', '2021-03-01', '2021-05-01', '2021-02-01', '2021-04-01', '2021-06-01']
}

df = pd.DataFrame(data)
print(df)

输出如下:

   id        date
0   1  2021-01-01
1   2  2021-03-01
2   2  2021-05-01
3   3  2021-02-01
4   3  2021-04-01
5   3  2021-06-01

数据集中有两个字段:id 和 date。id 代表数据的分类,date 代表数据的时间。现在我们将根据 id 分组,找出每组的最大和最小日期。

分组操作

使用 groupby 方法进行分组操作:

groups = df.groupby('id')

以上代码将数据集按照 id 进行分组,生成一个 pandas.core.groupby.generic.DataFrameGroupBy 对象。

聚合操作

我们需要对每组数据进行聚合操作,找出每组的最大和最小日期。这里我们可以使用 agg 方法进行聚合操作:

result = groups.agg({'date': ['min', 'max']})

以上代码将对每组数据的 date 列执行最小值和最大值操作,生成一个新的数据集。输出如下:

         date           
          min        max
id                      
1  2021-01-01 2021-01-01
2  2021-03-01 2021-05-01
3  2021-02-01 2021-06-01

我们可以看到,输出的数据集中包含了每组数据的最小日期和最大日期。

完整代码
import pandas as pd

data = {
    'id': [1, 2, 2, 3, 3, 3],
    'date': ['2021-01-01', '2021-03-01', '2021-05-01', '2021-02-01', '2021-04-01', '2021-06-01']
}

df = pd.DataFrame(data)
groups = df.groupby('id')
result = groups.agg({'date': ['min', 'max']})
print(result)

以上代码实现了根据 pandas 中的属性 id 找出最大和最小日期的操作。