Панды объединяют два ряда с условием

1

Интересно, есть ли способ группировать строки, а затем условные агрегированные группы. Спасибо
например, для colA есть A, он должен установить colB для второго A для теста1 и суммы colC

colA colB colC
A   test1  5
A   None   6
B   test1  4
C   test1  5
C   test3  4
D   test4  5
D   None   4

ожидаемый результат

colA colB colC
A   test1  11
B   test1  4
C   test1  5
C   test3  4
D   test4  9
Теги:
pandas

1 ответ

2
Лучший ответ

IIUC, вы можете использовать groupby и заполнять, а затем снова группировать и суммировать

df['colB'] = df.groupby('colA').colB.ffill().bfill()
df.groupby(['colA','colB'], as_index = False).sum()

    colA    colB    colC
0   A       test1   11
1   B       test1   4
2   C       test1   5
3   C       test3   4
4   D       test4   9
  • 0
    Ячейка будет заполнена только в том случае, если перед ней есть данные. если заказ не такой, как я написал, он не сработает. Спасибо
  • 0
    @galaxyan, вы можете использовать ffill (). bfill (). Пл см редактировать

Ещё вопросы

Сообщество Overcoder
Наверх
Меню