Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Python - Cách nhóm Pandas DataFrame theo năm


Nhóm DataFrame theo năm dùng groupby() với pd.Grouper. Chọn cột ngày qua hàm grouper. Ví dụ nhóm 3 năm và tính tổng Reg_Price.

DataFrame mẫu:

dataFrame = pd.DataFrame({"Car": ["Audi", "Lexus", "Tesla", "Mercedes", "BMW", "Toyota", "Nissan", "Bentley", "Mustang"],
    "Date_of_Purchase": [pd.Timestamp("2021-06-10"), pd.Timestamp("2019-07-11"), pd.Timestamp("2016-06-25"), pd.Timestamp("2021-06-29"), pd.Timestamp("2020-03-20"), pd.Timestamp("2019-01-22"), pd.Timestamp("2011-01-06"), pd.Timestamp("2013-01-04"), pd.Timestamp("2014-05-09")],
    "Reg_Price": [1000, 1400, 1100, 900, 1700, 1800, 1300, 1150, 1350]})

Dùng Grouper trong groupby, freq='3Y':

dataFrame.groupby(pd.Grouper(key='Date_of_Purchase', axis=0, freq='3Y')).sum()

Ví dụ

import pandas as pd 
dataFrame = pd.DataFrame({"Car": ["Audi", "Lexus", "Tesla", "Mercedes", "BMW", "Toyota", "Nissan", "Bentley", "Mustang"],
    "Date_of_Purchase": [pd.Timestamp("2021-06-10"), pd.Timestamp("2019-07-11"), pd.Timestamp("2016-06-25"), pd.Timestamp("2021-06-29"), pd.Timestamp("2020-03-20"), pd.Timestamp("2019-01-22"), pd.Timestamp("2011-01-06"), pd.Timestamp("2013-01-04"), pd.Timestamp("2014-05-09")],
    "Reg_Price": [1000, 1400, 1100, 900, 1700, 1800, 1300, 1150, 1350]}) 
print("DataFrame...\n", dataFrame) 
print("\nNhóm DataFrame theo 3 năm...\n", dataFrame.groupby(pd.Grouper(key='Date_of_Purchase', axis=0, freq='3Y')).sum())

Kết quả

DataFrame... 
  Car  Date_of_Purchase  Reg_Price 
0 Audi  2021-06-10  1000 
1 Lexus  2019-07-11  1400 
2 Tesla  2016-06-25  1100 
3 Mercedes  2021-06-29  900 
4 BMW  2020-03-20  1700 
5 Toyota  2019-01-22  1800 
6 Nissan  2011-01-06  1300 
7 Bentley  2013-01-04  1150 
8 Mustang  2014-05-09  1350 
Group Dataframe by 3 years... 
Reg_Price 
Date_of_Purchase 
2011-12-31  1300 
2014-12-31  2500 
2017-12-31  1100 
2020-12-31  4900 
2023-12-31  1900