Как получить cumsum с помощью пользовательской функции агрегации в пандах - PullRequest
0 голосов
/ 20 апреля 2019

У меня есть DataFrame, как указано ниже

df = pd.DataFrame({'year':[2014,2017,2014,2016,2016],'prod':['A','B','C','D','E']})

Я могу получить его с помощью этого

df.groupby('year').count().cumsum() ##

    prod
year    
2014    2
2016    4
2017    5

Я хочу получить этот результат, используя Только пользовательские функции где custom_func можно передать

df.groupby('year').agg({'year':custom_func})

Я пробовал до сих пор

def count_sum(series):
    se = pd.Series(np.ones(series.shape[0]))   
    return se.sum()

df.groupby('year').agg({'year':count_sum}) ## it is just returning as 'count' function

1 Ответ

0 голосов
/ 20 апреля 2019

Функция cumsum применительно к выводу агрегации - здесь один столбец DataFrame, поэтому необходимо ставить его после agg:

print (df.groupby('year').agg({'year':count_sum}))
      year
year      
2014     2
2016     2
2017     1

df1 = df.groupby('year').agg({'year':count_sum}).cumsum()
print (df1)
      year
year      
2014     2
2016     4
2017     5
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...