Фрейм данных заменяет ложноположительные значения

#python #pandas #dataframe

Вопрос:

У меня есть фрейм данных с именем и уровнем столбцов. Уровень имеет 2 значения : Вкл.и выкл. Для некоторых индексов фрейма данных появляются ложные срабатывания. Например:

 Timestamp CompName Level ---------------------------- 2021-09-07 B. Off 2021-09-08 B. Off 2021-09-09 B. Off 2021-09-10 B. On 2021-09-11 B. Off  

Между сотнями значений «Выключено» появляются 1-2 значения «Включено», которые являются ложными срабатываниями, и я хочу заменить их на «Выключено», чтобы сделать это нормальным. Или в других случаях все наоборот

 Timestamp CompName Level  ----------------------------  2021-09-07 A. On  2021-09-08 A. On  2021-09-09 A. On  2021-09-10 A. Off  2021-09-11 A. On   

На этот раз для другого имени компонента появляется одноуровневое значение «выкл.» между значениями «Вкл.», и на этот раз я хочу, чтобы оно было заменено на «вкл.».

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

 Timestamp CompName Level  ------------------------------  2021-09-07 C. On  2021-09-08 C. Off  2021-09-09 C. Off  2021-09-10 C. Off  2021-09-11 C. Off  

Теперь значение On не следует заменять, потому что это первое значение для compname C.

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

Я пробовал перебирать индексы и заменять их, но это не дает мне желаемого результата

Ответ №1:

Попробуйте это:

 most_common_value = df['Level'].value_counts().index[0] df['Level'].iloc[1:] = most_common_value  

Выход:

 gt;gt;gt; df Timestamp CompName Level 2021-09-07 B. On 2021-09-08 B. Off 2021-09-09 B. Off 2021-09-10 B. On 2021-09-11 B. Off  gt;gt;gt; most_common_value = df['Level'].value_counts().index[0] gt;gt;gt; df['Level'].iloc[1:] = most_common_value gt;gt;gt; df  Timestamp CompName Level 0 2021-09-07 B. On 1 2021-09-08 B. Off 2 2021-09-09 B. Off 3 2021-09-10 B. Off 4 2021-09-11 B. Off  gt;gt;gt; most_common_value 'Off'