首页 > 解决方案 > 如何聚合(总和、平均值等)在 Pandas 数据框索引中共享某个属性的值?

问题描述

<pandas.core.frame.DataFrame>我有一个看起来像这样的 Pandas 数据框

Date           Count1    Count2
2020-01-01     11        23
2020-02-01     13        24
2020-01-11     12        22
2020-04-01     43        13
...

如果我想获得 Jan 中出现的行的平均值或总和(或任何特定的布尔条件),我需要做什么?

标签: pythonpandas

解决方案


    1. 生成玩具熊猫 DataFrame
import numpy as np 
import pandas as pd 
from datetime import datetime



basedata = pd.DataFrame({'month':np.random.randint(low=1, high=4, size=10),
'day': np.random.randint(low=1, high=20, size=10)})

basedata['date'] = basedata.apply(lambda x: datetime(year=2020, month=x['month'], day=x['day']), axis=1)
basedata['count1'] = np.random.randint(low=10, high=30, size=10)
basedata['count2'] = np.random.randint(low=20, high=30, size=10)
basedata = basedata.drop(['month', 'day'], axis=1)
basedata

在此处输入图像描述

    1. 如果你想计算每个月的数据,你可以写这样的代码:
basedata.groupby(basedata['date'].dt.month).agg({'count1':['sum', 'count', 'mean'], 'count2':['sum', 'count']})

在此处输入图像描述

    1. 如果要按月过滤数据。见下面的代码:
basedata.loc[basedata['date'].dt.month ==1, :]

在此处输入图像描述


推荐阅读