Reemplazando algunos valores en una columna de dataframe de pandas con otro valor

Tengo una base de datos de pandas df como se ilustra a continuación:

BrandName Specialty AH BI ABC J DK AB L 

Quiero reemplazar ‘ABC’ y ‘AB’ en la columna BrandName por A. ¿Puede alguien ayudarme con esto?

La forma más fácil es usar el método de replace en la columna. Los argumentos son una lista de las cosas que desea reemplazar (aquí ['ABC', 'AB'] ) y con qué quiere reemplazarlos (la cadena 'A' en este caso):

 >>> df['BrandName'].replace(['ABC', 'AB'], 'A') 0 A 1 B 2 A 3 D 4 A 

Esto crea una nueva serie de valores, por lo que debe asignar esta nueva columna al nombre de columna correcto:

 df['BrandName'] = df['BrandName'].replace(['ABC', 'AB'], 'A') 

Reemplazar

DataFrame objeto DataFrame tiene un método de replace poderoso y flexible:

 DataFrame.replace( to_replace=None, value=None, inplace=False, limit=None, regex=False, method='pad', axis=None) 

Tenga en cuenta que si necesita realizar cambios en el lugar, use el argumento booleano inplace para replace método:

En su lugar

inplace : boolean, predeterminado False If True , en su lugar. Nota: esto modificará cualquier otra vista en este objeto (por ejemplo, una columna de un DataFrame). Devuelve la llamada si esto es True .

Retazo

 df['BrandName'].replace( to_replace=['ABC', 'AB'], value='A', inplace=True ) 

Esta solución cambiará el propio dataframe existente:

 mydf = pd.DataFrame({"BrandName":["A", "B", "ABC", "D", "AB"], "Speciality":["H", "I", "J", "K", "L"]}) mydf["BrandName"].replace(["ABC", "AB"], "A", inplace=True) 

La función loc se puede usar para reemplazar varios valores, Documentación para ella: loc

 df.loc[df['BrandName'].isin([ABC', 'AB'])]='A' 

Creado el dataframe:

 import pandas as pd dk=pd.DataFrame({"BrandName":['A','B','ABC','D','AB'],"Specialty":['H','I','J','K','L']}) 

Ahora usa la función DataFrame.replace() :

 dk.BrandName.replace(to_replace=['ABC','AB'],value='A') 

Solo quería mostrar que no hay diferencia de rendimiento entre las 2 formas principales de hacerlo:

 df = pd.DataFrame(np.random.randint(0,10,size=(100, 4)), columns=list('ABCD')) def loc(): df1.loc[df1["A"] == 2] = 5 %timeit loc 19.9 ns ± 0.0873 ns per loop (mean ± std. dev. of 7 runs, 10000000 loops each) def replace(): df2['A'].replace( to_replace=2, value=5, inplace=True ) %timeit replace 19.6 ns ± 0.509 ns per loop (mean ± std. dev. of 7 runs, 10000000 loops each)