Как суммировать инверсию строк в серии Pandas? - PullRequest
0 голосов
/ 30 мая 2020

У меня есть фрейм данных pandas, и мне нужно суммировать двухмесячные значения для каждого города (столбец «Municipio»).

Как и в «Acrelândia» на первом биместере в 2019 году дают значение 1,762,356,65. Я не знаю, как сделать это эффективно. Кто-нибудь может мне помочь?

DataFrame выглядит так:

        Município   UF   Mês  ...       2017       2018       2019
0      Acrelândia   AC   1.0  ...  748780.61  740381.02  861747.15
1      Acrelândia   AC   2.0  ...  850714.86  880849.33  900609.50
2      Acrelândia   AC   3.0  ...  617978.20  642454.98  711703.16
3      Acrelândia   AC   4.0  ...  685174.68  661647.05  718405.94
4      Acrelândia   AC   5.0  ...  772153.06  783355.47  825357.96
...           ...  ...   ...  ...        ...        ...        ...
66824     Xambioá   TO   9.0  ...  440157.71  447923.66  522026.46
66825     Xambioá   TO  10.0  ...  478002.52  445073.83  564305.39
66826     Xambioá   TO  11.0  ...  473037.80  431933.80  633013.36
66827     Xambioá   TO  12.0  ...  568319.87  762546.79       0.00
66828         NaN  NaN   NaN  ...        NaN        NaN        NaN

[66829 rows x 16 columns]

1 Ответ

0 голосов
/ 30 мая 2020

используйте shift

import numpy as np
df['2017 (Bi-monthly)'] = np.where(df['Mês'] > 1, df['2017'] + df['2017'].shift(1), '')
df['2018 (Bi-monthly)'] = np.where(df['Mês'] > 1, df['2018'] + df['2018'].shift(1), '')
df['2019 (Bi-monthly)'] = np.where(df['Mês'] > 1, df['2019'] + df['2019'].shift(1), '')

Вы не сможете рассчитать первый месяц 2017 года, но вы можете рассчитать первый месяц 2018 и 2019 годов. Для этого попробуйте следующее; по общему признанию, я не мог подтвердить, что приведенный ниже код работает, поскольку я не мог проверить, поскольку вы вставили изображение. Если бы вы могли скопировать и вставить фактические данные вместо изображения, я мог бы исправить приведенный ниже код, если он не работает:

df.loc[df['Mês'] == 1, '2018 (Bi-monthly)'] = df.loc[df['Mês'] == 12]['2017'] + df.loc[df['Mês'] == 1]['2018']
df.loc[df['Mês'] == 1, '2019 (Bi-monthly)'] = df.loc[df['Mês'] == 12]['2018'] + df.loc[df['Mês'] == 1]['2019']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...