Modificar el contenido de un dataframe - Панды

Tengo ООН dataframe надетый шаг скрутки una columna llamada Valoración que contiene пробует опечатки de переменные, bien, mal o regular. Я gustaría преобразователь Лос доблесть maly regular por no_bien y así de esta manera trata mal y regular ООН Комо único доблесть.

Hago lo siguiente pero никакой funciona,

new_df.at['Valoracion']['mal'] = 'no_bien'
new_df.at['Valoracion']['regular'] = 'no_bien'

new_df = new_df.dropna()
new_df['Valoracion'].value_counts().plot(kind = 'bar')

¿Como puedo hacerlo?

Gracias

3
задан 19.12.2019, 14:23
4 ответа

Я думаю, что способ проще, чем со мной случилось, он с ".loc", оставаясь эта простая линия:

new_df.loc[new_df['Valoracion'] != 'bien'] = 'no_bien'

Во все в колонне 'Оценке', кто отличный от добра, мы распределяем ему 'no_bien'

Вооружил df как Лукас в Ваш ответ

import pandas as pd

new_df = pd.DataFrame(['bien','mal','regular','regular','regular','bien','bien','mal'],columns=['Valoracion'])
print(new_df)

new_df.loc[new_df['Valoracion'] != 'bien'] = 'no_bien'
print("\n",new_df)

давая как оказанный следующее:

Antes: Valoracion
0       bien
1        mal
2    regular
3    regular
4    regular
5       bien
6       bien
7        mal

Despues:Valoracion
0       bien
1    no_bien
2    no_bien
3    no_bien
4    no_bien
5       bien
6       bien
7    no_bien
2
ответ дан 21.12.2019, 12:13

Смиренное решение могло бы быть используя lambda . Таким образом что он возвращает bien да Оценки bien, и no_bien из-за дорожки falso.

df = pd.DataFrame(['bien','mal','regular','regular','regular','bien','bien','mal'],columns=['Valoracion'])

мы Можем создавать новую колонну только чтобы проверять, что результаты были правильны.

df['foo'] = df['Valoracion'].apply(lambda x: 'bien' if x == 'bien' else 'no_bien')

и вывод был бы так:

 Valoracion | foo
----------------------
0   bien    | bien
1   mal     | no_bien
2   regular | no_bien
3   regular | no_bien
4   regular | no_bien
5   bien    | bien
6   bien    | bien
7   mal     | no_bien

pd: Это решение ты будет функционировать, всякий раз когда у тебя было 3 отличных типа стоимости как в твоем случае хорошо, плохой, регулярно

3
ответ дан 21.12.2019, 12:13

Редактирование: Ты можешь заменять стоимость mapeando или делая корреспонденцию между стоимостью колонны и стоимостью, которую был бы должен возвращать компаньон этому. В твоем случае мы делаем:

"хорошо' соответствует ему довольно

'плохо' соответствует ему не-довольно

'регулировать" соответствует ему не-довольно

И мы выполняем mapeo для этой колонны. Поскольку мы хотим изменить колонну, мы способствуем тому, чтобы результат был той же колонной.

 new_df['Valoracion']=new_df['Valoracion'].map({'bien':'bien','mal':'no-bien','regular':'no-bien'})
2
ответ дан 21.12.2019, 12:13
  • 1
    Ответы, которые у них только есть có я говорю без какой-либо explicació n они считались низкого качества. В дальнейшем ты agradecerí хозяева, что ты объяснял мотив có я говорю. – Roger Torné 19.12.2019, 18:04
  • 2
    Считай оставлять edició n предложенная так как эти размещая на уровне có я говорю текст, который только это объясняет, не состоит в том, чтобы он был неправильным, но видят немного extrañ или – Aprendiz 19.12.2019, 18:24
  • 3
    Спасибо, уже издайте ответ действительно я новый в этом и я предположил, что instrucció n сама он объяснялся, но я понимаю, что нужно объяснять и не предполагать, что тот, что вопрос знает этого. – Juan Carlos Guibovich 19.12.2019, 18:41

Для этого ты мог бы использовать панд. DataFrame.loc , indentificando элемент и потом это заменяя стоимостью, что ты нуждаешься в этом случае no_bien в и в конце концов сохраняешь файл. Следующей формы:

import pandas as pd
file = 'mi_archivo.csv'
new_df = pd.read_csv(file)
new_df.loc[new_df['Valoracion'] == 'mal', "Valoracion"] = 'no_bien'
new_df.loc[new_df['Valoracion'] == 'regular', "Valoracion"] = 'no_bien'
new_df.to_csv(file, index=False)
print(new_df)

Надеялся, что он подает тебя. Привет ;)

1
ответ дан 21.12.2019, 12:13

Теги

Похожие вопросы