Tengo los siguientes datos:

S.No   Department  stock stock  stock
1       Medicine        34  38  58
2       Pharma          23  39  71
3       ortho           76  12  81

El archivo fuente que obtengo tiene los valores repetidos de los encabezados de columna como "stock", en realidad debería ser "Stock1", "Stock2" y "Stock3". No quiero hacerlo manualmente sino programáticamente.

Lo intenté:

df.rename(columns  = {df.columns[1]: 'Stock1'})
df.rename(columns  = {df.columns[2]: 'Stock2'})
df.rename(columns  = {df.columns[3]: 'Stock3'})

Pero esto no funciona.

Por favor, ayúdeme.

1
zsh_18 25 feb. 2020 a las 06:26

2 respuestas

La mejor respuesta

Varios puntos de falla.

  1. El método pandas.DataFrame.rename devuelve una copia. Debe reasignarlo de nuevo al nombre df
  2. Deberías hacerlo con un diccionario
  3. Eso no funcionaría porque tienes tres columnas con el mismo nombre

Tengo que asumir algunas cosas sobre la forma general de su problema. Primero, dividiré su marco de datos en columnas con 'stock' y columnas sin

df_stock = df.filter(regex='^stock$')
df_other = df.drop('stock', axis=1)

df_stock.columns += list(map(str, range(1, df_stock.shape[1] + 1)))

df_new = df_other.join(df_stock)
1
piRSquared 25 feb. 2020 a las 03:49

¿Has probado df.columns = ['Stock1', 'Stock2', 'Stock3']?

0
gkennos 25 feb. 2020 a las 03:31