У меня есть dataframe, который выглядит следующим образом:pandas: сравнить сумму за два периода времени?
prod_code month items cost
0 040201060AAAIAI 2016-05-01 5 572.20
1 040201060AAAKAK 2016-05-01 164 14805.19
2 040201060AAALAL 2016-05-01 13465 14486.07
Я хотел бы первую группу первого четыре символа prod_code
, затем просуммировать общую стоимость каждой группы из января-февраля 2016 года, а затем сравнить это с общая стоимость с марта по апрель 2016 года, затем найдите группы с наибольшим процентным увеличением за два периода времени.
Каков наилучший способ сделать это?
Вот мой код до сих пор:
d = { 'prod_code': ['040201060AAAIAI', '040201060AAAIAJ', '040201060AAAIAI', '040201060AAAIAI', '040201060AAAIAI', '040201060AAAIAI', '040301060AAAKAG', '040301060AAAKAK', '040301060AAAKAK', '040301060AAAKAX', '040301060AAAKAK', '040301060AAAKAK'], 'month': ['2016-01-01', '2016-02-01', '2016-03-01', '2016-01-01', '2016-02-01', '2016-03-01', '2016-01-01', '2016-02-01', '2016-03-01', '2016-01-01', '2016-02-01', '2016-03-01'], 'cost': [43, 45, 46, 41, 48, 59, 8, 9, 10, 12, 15, 13] }
df = pd.DataFrame.from_dict(d)
df['para'] = df.prod_code.str[:4]
df_para = df.groupby(['para', 'month']).sum()
Это дает мне df_para
, который выглядит следующим образом:
cost
para month
0402 2016-01-01 84
2016-02-01 93
2016-03-01 105
0403 2016-01-01 20
2016-02-01 24
2016-03-01 23
Теперь нужно вычислить сумму для каждой группы в январе-феврале и для Apr-Mar, то разница между этими двумя группами и, наконец, сортировать по разнице между этими двумя группами. Каков наилучший способ сделать это?
Не могли бы вы предоставить ввод __reproducible__ и нужные наборы данных? – MaxU