Python - 如何按天对 Pandas DataFrame 进行分组?


我们将使用 groupby() 对 Pandas DataFrame 进行分组。使用 grouper 函数来选择要使用的列。我们将按天分组,并计算我们下面给出的汽车销售记录示例中按天的注册价格总和。

在 groupby() 的 grouper 方法中将频率设置为天区间,也就是说,如果 freq 是 7D,这意味着数据按每个月中 7 天的间隔分组,一直到日期列中给出的最后日期。

首先,我们假设以下是我们带有三列的 Pandas DataFrame −

import pandas as pd

# dataframe with one of the columns as Date_of_Purchase
dataFrame = pd.DataFrame(
   {
      "Car": ["Audi", "Lexus", "Tesla", "Mercedes", "BMW", "Toyota", "Nissan", "Bentley", "Mustang"],

      "Date_of_Purchase": [
         pd.Timestamp("2021-06-10"),
         pd.Timestamp("2021-07-11"),
         pd.Timestamp("2021-06-25"),
         pd.Timestamp("2021-06-29"),
         pd.Timestamp("2021-03-20"),
         pd.Timestamp("2021-01-22"),
         pd.Timestamp("2021-01-06"),
         pd.Timestamp("2021-01-04"),
         pd.Timestamp("2021-05-09")
      ],

      "Reg_Price": [1000, 1400, 1100, 900, 1700, 1800, 1300, 1150, 1350]
   }
)

接下来,使用 Grouper 在 groupby 函数中选择 Date_of_Purchase 列。频率设置为 7D,即分组到列中提到的最后日期的 7 天间隔 −

print"\nGroup Dataframe by 7 days...\n",dataFrame.groupby(pd.Grouper(key='Date_of_Purchase', axis=0, freq='7D')).sum()

示例

以下是代码 −

import pandas as pd

# dataframe with one of the columns as Date_of_Purchase
dataFrame = pd.DataFrame(
   {
      "Car": ["Audi", "Lexus", "Tesla", "Mercedes", "BMW", "Toyota", "Nissan", "Bentley", "Mustang"],

      "Date_of_Purchase": [
         pd.Timestamp("2021-06-10"),
         pd.Timestamp("2021-07-11"),
         pd.Timestamp("2021-06-25"),
         pd.Timestamp("2021-06-29"),
         pd.Timestamp("2021-03-20"),
         pd.Timestamp("2021-01-22"),
         pd.Timestamp("2021-01-06"),
         pd.Timestamp("2021-01-04"),
         pd.Timestamp("2021-05-09")
       ],
       "Reg_Price": [1000, 1400, 1100, 900, 1700, 1800, 1300, 1150, 1350]
    }
)

print"DataFrame...\n",dataFrame

# Grouper to select Date_of_Purchase column within groupby function
print("\nGroup Dataframe by 7 days...\n",dataFrame.groupby(pd.Grouper(key='Date_of_Purchase', axis=0, freq='7D')).sum()
)

输出

这将产生以下输出 −

DataFrame...
        Car    Date_of_Purchase   Reg_Price
0      Audi      2021-06-10          1000
1     Lexus      2021-07-11          1400
2     Tesla      2021-06-25          1100
3  Mercedes      2021-06-29           900
4       BMW      2021-03-20          1700
5    Toyota      2021-01-22          1800
6    Nissan      2021-01-06          1300
7   Bentley      2021-01-04          1150
8   Mustang      2021-05-09          1350

Group Dataframe by 7 days...
                  Reg_Price
Date_of_Purchase
2021-01-04         2450.0
2021-01-11            NaN
2021-01-18         1800.0
2021-01-25            NaN
2021-02-01            NaN
2021-02-08            NaN
2021-02-15            NaN
2021-02-22            NaN
2021-03-01            NaN
2021-03-08            NaN
2021-03-15         1700.0
2021-03-22            NaN
2021-03-29            NaN
2021-04-05            NaN
2021-04-12            NaN
2021-04-19            NaN
2021-04-26            NaN
2021-05-03         1350.0
2021-05-10            NaN
2021-05-17            NaN
2021-05-24            NaN
2021-05-31            NaN
2021-06-07         1000.0
2021-06-14            NaN
2021-06-21         1100.0
2021-06-28          900.0
2021-07-05         1400.0

更新于: 09-Sep-2021

2000 次以上浏览

开启你的职业生涯

完成课程以获得认证

开始
广告