Как разделить данные с помощью pandas и вычислить сумму разделенных данных?

#python #pandas

#python #pandas

Вопрос:

У меня есть большой фрейм данных, который организован следующим образом:

 Timestamp  slot_ID   counter1  Counter2
1552227371    1        0         1
1552227372    2        1         0
1552227373    3        1         1
...         ...       ..       ...
1552229621    100      1         1
1552229622    1        1         0
1552229623    2        0         1
1552229624    3        1         1
...         ...       ..       ...
1552229626    100      1         1
  

Я хочу разделить свой фрейм данных на основе slot_ID, чем вычислять сумму разных счетчиков для 100 slot_ID. Счетчик 1 и счетчик 2 постоянно имеют значение 0 или 1. Это означает, что сумма каждых 100 слотов меньше или равна 100.

 def consecutive_groups(iterable, ordering=lambda x: x):
    for k, g in groupby(enumerate(iterable), key=lambda x: x==100):
        yield map(itemgetter(1), g)

   grpsper100 = consecutive_groups(df_node['slot_ID'].index)
dfs = {i: df.iloc[list(j)] for i, j in enumerate(grpsper100, 1)}
for key, value in dfs.items():
    #print(value['slot_ID'])
    print(key)
    print(value['Counter1'].sum())
    print(value['Counter2'].sum())
  

Однако мой код не дает мне ожидаемого ответа:

    key: 1
   Counter1: 119083
   Counter2:  117400
  

Пожалуйста, как исправить мой код?

Комментарии:

1. Что вам нужно, так это dfs.loc[dfs['slot_ID'] == 100, dfs['counter1']].sum() и dfs.loc[dfs['slot_ID'] == 100, dfs['counter2']].sum()

2. @JoshFriedlander спасибо за ваш ответ, но он выдает мне эту ошибку: AttributeError: объект ‘dict’ не имеет атрибута ‘loc’

3. Извините, не заметил, что у вас есть dict с таким именем и что ваш dataframe называется df . Итак, тогда это df.loc[df['slot_ID'] == 100, df['counter1']].sum()

4. Спасибо за вашу помощь, но это выдает мне ошибку памяти.