Pythonic версия Excel SUMIF - PullRequest
       11

Pythonic версия Excel SUMIF

1 голос
/ 04 июля 2019

Я пытаюсь создать дополнительный столбец на основе количества измерений в строке.Итак, допустим, у меня есть фрейм данных, содержащий два измерения (месяц, страна) и метрику (сумма).Основываясь на измерении месяца, я хочу, чтобы значение в новом столбце содержало значение этого месяца со смещением даты на два месяца (при сохранении другого измерения таким же) - см. Таблицу ниже.

В Excelможно выполнить следующее:

SUMIFS($C:$C,$B:$B,B2,$A:$A,DATE(YEAR(A2),MONTH(A2)-2,DAY(A2)))

На обычном языке: Sum, если (1) столбец страны содержит то же значение, что и ячейка, на которую я ссылаюсь в столбце страны в текущей строке, и(2) столбец month содержит то же значение, что и ячейка, на которую я ссылаюсь в столбце month в текущей строке, но со смещением даты минус 2 месяца.

+--------+---------+-----+------+
|  month | country | sum | sum2 |
+--------+---------+-----+------+
| 1/1/19 | DE      |  58 |    0 |
| 2/1/19 | DE      |  61 |    0 |
| 3/1/19 | DE      |  89 |   58 |
| 4/1/19 | DE      |  45 |   61 |
| 5/1/19 | DE      |  33 |   89 |
| 6/1/19 | DE      |  17 |   45 |
| 1/1/19 | NL      |  18 |    0 |
| 2/1/19 | NL      |  23 |    0 |
| 3/1/19 | NL      |  56 |   18 |
| 4/1/19 | NL      |  22 |   23 |
| 5/1/19 | NL      |  49 |   56 |
| 6/1/19 | NL      |  64 |   22 |
+--------+---------+-----+------+

1 Ответ

1 голос
/ 04 июля 2019

Я вполне уверен, что это должно сделать это:

(df.merge(df.assign(month=df.month + pd.DateOffset(months=2)),
          on=['month', 'country'],
          how='left',
          suffixes=['', '2'])
    .groupby(['country', 'month'], as_index=False)
    .agg({'sum': 'first',
          'sum2': 'sum'}))

      country      month  sum  sum2
0    DE       2019-01-01   58   0.0
1    DE       2019-02-01   61   0.0
2    DE       2019-03-01   89  58.0
3    DE       2019-04-01   45  61.0
4    DE       2019-05-01   33  89.0
5    DE       2019-06-01   17  45.0
6    NL       2019-01-01   18   0.0
7    NL       2019-02-01   23   0.0
8    NL       2019-03-01   56  18.0
9    NL       2019-04-01   22  23.0
10   NL       2019-05-01   49  56.0
11   NL       2019-06-01   64  22.0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...