Home > Software design >  How can I do Python for groupby in dataframe
How can I do Python for groupby in dataframe

Time:09-21

I have one dataframe that include transactions. I want to group data.

buyDate             category    subcategory product         actual_price    sell_price
1/1/2021            Cloth       women       shirt style A   5               4
1/1/2021            Cloth       men         skirt style A   7               6.5
1/1/2021            Accessories ear         sky wing        2               1
2/1/2021            Automotive  wheel       small           21              18
2/1/2021            Automotive  wheel       big             34              30
1/14/2021           Accessories ring        queen couple    3               3
1/17/2021           Cloth       women       shirt style B   7               7
1/17/2021           Cloth       men         skirt style A   7               6.5
4/2/2021            Cloth       men         skirt style A   10              9
5/2/2021            Accessories ring        queen couple    3               2.5
7/2/2021            Cloth       women       shirt style B   16              12
7/2/2021            Automotive  wheel       big             40              35
2/26/2021           Accessories ring        queen couple    4               4
2/26/2021           Cloth       women       shirt style B   9               5
2/26/2021           Cloth       men         skirt style A   7               9
2/28/2021           Accessories ear         sky wing        2               1
1/3/2021            Automotive  wheel       big             38              35
1/3/2021            Accessories ring        queen couple    4               4
7/3/2021            Automotive  wheel       big             39              37
3/31/2021           Accessories ring        queen couple    4               4

I want to get average monthly sell and actual price per category and subcategory. Try many but it isn't working

CodePudding user response:

Just do:

>>> df.groupby(['category', 'subcategory']).mean()
                         actual_price  sell_price
category    subcategory                          
Accessories ear                  2.00        1.00
            ring                 3.60        3.50
Automotive  wheel               34.40       31.00
Cloth       men                  7.75        7.75
            women                9.25        7.00
>>> 

CodePudding user response:

Try this:

df['month'] = pd.to_datetime(df["buyDate"]).dt.month

df.groupby(['month','category', 'subcategory']).mean()

CodePudding user response:

Use Grouper with aggregate mean:

df['buyDate'] = pd.to_datetime(df["buyDate"])
df.groupby([pd.Grouper(freq='M', key='buyDate'),'category', 'subcategory']).mean()
  • Related