Me gustaría cambiar una columna en un Pandas DataFrame
, pero no he podido encontrar un método para hacerlo desde la documentación sin volver a escribir todo el DF. Alguien sabe como hacerlo? Marco de datos:
## x1 x2
##0 206 214
##1 226 234
##2 245 253
##3 265 272
##4 283 291
Salida deseada:
## x1 x2
##0 206 nan
##1 226 214
##2 245 234
##3 265 253
##4 283 272
##5 nan 291
Respuestas:
fuente
df['x2'] = np.roll(df['x2'], 1)
Necesitas usar
df.shift
aquí.df.shift(i)
desplaza todo el marco de datos pori
unidades hacia abajo.Entonces, para
i = 1
:Entrada:
Salida:
Entonces, ejecute este script para obtener el resultado esperado:
fuente
Definamos el marco de datos de su ejemplo por
Entonces podrías manipular el índice de la segunda columna por
y finalmente volver a combinar las columnas individuales
Quizás no sea rápido pero fácil de leer. Considere establecer variables para los nombres de las columnas y el turno real requerido.
Editar: En general, el cambio es posible según
df[2].shift(1)
lo ya publicado, pero eso cortaría el remanente.fuente
Si no desea perder las columnas que desplaza más allá del final de su marco de datos, simplemente agregue el número requerido primero:
fuente
Supongo que las importaciones
Primero agregue una nueva fila
NaN, NaN,...
al final de DataFrame (df
).Creará un nuevo DF df2. Quizás haya una forma más elegante pero esto funciona.
Ahora puedes cambiarlo:
fuente
Intentando dar respuesta a un problema personal y similar al tuyo encontré en Pandas Doc lo que creo que respondería a esta pregunta:
Espero ayudar a futuras preguntas en este asunto.
fuente
Así es como lo hago:
Básicamente, estoy generando un marco de datos vacío con el índice deseado y luego los concateno juntos. Pero realmente me gustaría ver esto como una característica estándar en los pandas, así que he propuesto una mejora para los pandas.
fuente