Este es un ejemplo del archivo que tengo,

Name     Att1     Att2     Att3
AB_EN    1        2        3
CD       5        6        7
FG_EN    7        8        9

Entonces, en la columna 'Nombre', donde '_EN' está presente, quiero eliminar la parte '_EN'. El resultado debe ser el siguiente:

Name     Att1     Att2     Att3
AB       1        2        3
CD       5        6        7
FG       7        8        9

Esto es lo que estaba intentando:

name = df['Name']

for entry in name:
    if "_EN" in entry:
       entry = entry.split('_')[0]

Sin embargo, esto no está funcionando. ¿Cuál es una buena manera de hacer esto?

0
Sayantan Ghosh 10 oct. 2019 a las 14:35

3 respuestas

La mejor respuesta

Utilice str.split

Ej:

df = pd.DataFrame({"Name": ["AB_EN", "CD", "FG_EN"]})
df['Name'] = df['Name'].str.split("_").str[0]
print(df)

Salida:

  Name
0   AB
1   CD
2   FG
1
Rakesh 10 oct. 2019 a las 11:39

Puede utilizar los métodos de cadena de Serie de pandas

En tu caso eso sería

df['Name']=(df.Name
      .str.split('_')  # split on _
      .str[0] # Only keep first part of the split
    )
0
Ivo Merchiers 10 oct. 2019 a las 11:40

Esto debería funcionar para usted:

df['Name'] = [name.split('_')[0] for name in df['Name']]

Solo tiene que hacer los cambios en el lugar de la serie en su marco de datos.

0
Harsh Patel 10 oct. 2019 a las 11:47
58321988