Python: суммирование каждых пяти строк данных столбца b и создание нового столбца - PullRequest
0 голосов
/ 29 августа 2018

У меня есть датафрейм, как показано ниже. Я хотел бы суммировать строки от 0 до 4 (каждые 5 строк) и создать еще один столбец с суммированным значением («новый столбец»). В моем реальном фрейме данных 263 строки, поэтому последние три строки каждые 12 строк будут суммой только трех строк. Как я могу сделать это, используя Pandas / Python. Я начал изучать Python недавно. Спасибо за любой совет заранее!

Мои шаблоны данных более сложны, так как я использую индекс в качестве одного из значений моего столбца, и он повторяется как:

Row Data "new column"   
0   5  
1   1  
2   3  
3   3  
4   2    14         
5   4  
6   8   
7   1  
8   2  
9   1    16
10  0
11  2
12  3     5
0   3  
1   1  
2   2  
3   3  
4   2    11         
5   2  
6   6   
7   2  
8   2  
9   1    13    
10  1
11  0
12  1    2
...
259 50   89
260 1
261 4
262 5    10

Я пробовал iterrows и groupby, но пока не могу заставить его работать.

1 Ответ

0 голосов
/ 29 августа 2018

Используйте это:

df['new col'] = df.groupby(df.index // 5)['Data'].transform('sum')[lambda x: ~(x.duplicated(keep='last'))]

Выход:

   Data  new col
0     5      NaN
1     1      NaN
2     3      NaN
3     3      NaN
4     2     14.0
5     4      NaN
6     8      NaN
7     1      NaN
8     2      NaN
9     1     16.0

Изменить для обработки обновленного вопроса:

g = df.groupby(df.Row).cumcount()
df['new col'] = df.groupby([g, df.Row // 5])['Data']\
                  .transform('sum')[lambda x: ~(x.duplicated(keep='last'))]

Выход:

    Row  Data  new col
0     0     5      NaN
1     1     1      NaN
2     2     3      NaN
3     3     3      NaN
4     4     2     14.0
5     5     4      NaN
6     6     8      NaN
7     7     1      NaN
8     8     2      NaN
9     9     1     16.0
10   10     0      NaN
11   11     2      NaN
12   12     3      5.0
13    0     3      NaN
14    1     1      NaN
15    2     2      NaN
16    3     3      NaN
17    4     2     11.0
18    5     2      NaN
19    6     6      NaN
20    7     2      NaN
21    8     2      NaN
22    9     1     13.0
23   10     1      NaN
24   11     0      NaN
25   12     1      2.0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...