Замените каждое значение после максимального значения на 1 в каждой группеPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Замените каждое значение после максимального значения на 1 в каждой группе

Сообщение Anonymous »

Цель состоит в том, чтобы назначить 1s любому индексу в группе, который является более высоким значением, чем из -за того, что извлечен из idxmax () < /p>
import numpy as np
import pandas as pd
df = pd.DataFrame({'id':[1, 1, 1, 2, 2, 2, 3, 3, 3], 'val':[1,np.NaN, 0, np.NaN, 1, 0, 1, 0, 0]})

id val
0 1 1.0
1 1 NaN
2 1 0.0
3 2 NaN
4 2 1.0
5 2 0.0
6 3 1.0
7 3 0.0
8 3 0.0
< /code>
Мы можем использовать idxmax (), чтобы получить значения индекса для наивысшего значения в каждой группе < /p>
test = df.groupby('id')['val'].idxmax()

id
1 0
2 4
3 6
< /code>
Цель состоит в том, чтобы преобразовать данные, чтобы выглядеть как таковые (что состоит в том, что каждое значение в группе, которое имеет более высокий индекс, чем то, что из idxmax () назначается 1. < /p>
id val
0 1 1.0
1 1 1.0
2 1 1.0
3 2 NaN
4 2 1.0
5 2 1.0
6 3 1.0
7 3 1.0
8 3 1.0

< /code>
Этот вопрос не обязательно должен быть сделан с помощью idxmax (). Открыт для любых предложений.

Подробнее здесь: https://stackoverflow.com/questions/724 ... each-group
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»