замените строки на панды loc

#python #pandas

Вопрос:

отправная точка:

     a
0   1
1   2
2   2
3   3
4   3
5   3
6   11
7   1
8   1
 
 df.loc[df['a'] == 1,:] = df.loc[df['a'] == 1,:].groupby('a').sum()

 

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

моя цель:

 a
0   2
1   2
2   3
3   3
4   3
5   11
6   3
 

Как я могу этого достичь? Спасибо!

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

1. Не могли бы вы, пожалуйста, заменить изображения фактическими значениями кода, чтобы было легче помочь? Спасибо!

2. изменил его 🙂 _

Ответ №1:

В вашем случае в этом нет необходимости groupby

 pd.concat([df.loc[df['a']!=1], df.loc[df['a'] == 1,:].sum().to_frame().T])
Out[356]: 
    a
1   2
2   2
3   3
4   3
5   3
6  11
0   3
 

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

1. Мне нравится трюк с конкатом! Я думаю, что это все? кстати, простая группировка-это просто для того, чтобы показать, что моя проблема заключается в том, что мне нужно выполнить более сложную операцию.