Reemplazar los valores dados en para reemplazar con valor.
Los valores del DataFrame se reemplazan con otros valores de forma dinámica. Esto difiere de actualizar con .loc
o .iloc
, que requieren que especifique una ubicación para actualizar con algún valor.
- Parámetros
-
- para reemplazar : str, regex, list, dict, Series, int, float o None
-
Cómo encontrar los valores que serán reemplazados.
Consulte la sección de ejemplos para ver ejemplos de cada uno de estos.
- valor : escalar, dict, list, str, regex, predeterminado Ninguno
-
Valor para reemplazar cualquier valor que coincida para reemplazar con. Para un DataFrame, se puede usar un dictado de valores para especificar qué valor usar para cada columna (las columnas que no están en el dictado no se llenarán). También se permiten expresiones regulares, cadenas y listas o dictados de dichos objetos.
- en su lugar : bool, predeterminado Falso
-
Si es cierto, en su lugar. Nota: esto modificará cualquier otra vista de este objeto (por ejemplo, una columna de un DataFrame). Devuelve la persona que llama si es Verdadero.
- límite : int o Ninguno, por defecto Ninguno
-
Espacio de tamaño máximo para llenar hacia adelante o hacia atrás.
- regex : bool o los mismos tipos que to_replace, por defecto Falso
-
Ya sea para interpretar para reemplazar y / o valor como expresiones regulares. Si esto es True
luego para reemplazardebe ser una cadena. Alternativamente, esto podría ser una expresión regular o una lista, dictado o matriz de expresiones regulares, en cuyo caso para reemplazar debe ser None
.
- método : ‘pad’, ‘ffill’, ‘bfill’, None
-
El método a utilizar cuando se sustituya, cuando para reemplazar es un escalar, lista o tupla y valor es None
.
- Devoluciones
-
- DataFrame o Ninguno
-
Objeto después de reemplazo o Ninguno si inplace=True
.
- Eleva
-
- AssertionError
-
- Error de tecleado
-
-
Si para reemplazar no es un escalar, similar a una matriz, dict
, o None
-
Si para reemplazar es un dict
y valor no es un list
, dict
, ndarray
, o Series
-
Si para reemplazar es None
y regex no es compilable en una expresión regular o es una lista, dict, ndarray o Series.
-
Al reemplazar varios bool
o datetime64
objetos y los argumentos para para reemplazar no coincide con el tipo de valor que se reemplaza
- ValueError
-
Ver también
DataFrame.fillna
-
Llene los valores de NA.
DataFrame.where
-
Reemplazar valores según la condición booleana.
Series.str.replace
-
Reemplazo simple de cuerdas.
Notas
-
La sustitución de expresiones regulares se realiza bajo el capó con re.sub
. Las reglas para la sustitución de re.sub
son lo mismo.
-
Las expresiones regulares solo sustituirán a las cadenas, lo que significa que no puede proporcionar, por ejemplo, una expresión regular que coincida con números de punto flotante y esperar que las columnas de su marco que tengan un tipo d numérico coincidan. Sin embargo, si esos números de punto flotante están strings, entonces puedes hacer esto.
-
Este método tiene mucho de opciones. Se le anima a experimentar y jugar con este método para obtener intuición sobre cómo funciona.
-
Cuando dict se usa como para reemplazar value, es como si la (s) clave (s) en el dict fueran la parte to_replace y los valores en el dict fueran el parámetro de valor.
Ejemplos de
Escalar `to_replace` y` value`
>>> s = pd.Series([0,1,2,3,4])>>> s.replace(0,5)0511223344
dtype: int64
>>> df = pd.DataFrame('A':[0,1,2,3,4],...'B':[5,6,7,8,9],...'C':['a','b','c','d','e'])>>> df.replace(0,5)
A B C
055 a
116 b
227 c
338 d
449 e
Tipo de lista `to_replace`
>>> df.replace([0,1,2,3],4)
A B C
045 a
146 b
247 c
348 d
449 e
>>> df.replace([0,1,2,3],[4,3,2,1])
A B C
045 a
136 b
227 c
318 d
449 e
>>> s.replace([1,2], method='bfill')0013233344
dtype: int64
dict-like `to_replace`
>>> df.replace(0:10,1:100)
A B C
0105 a
11006 b
227 c
338 d
449 e
>>> df.replace('A':0,'B':5,100)
A B C
0100100 a
116 b
227 c
338 d
449 e
>>> df.replace('A':0:100,4:400)
A B C
01005 a
116 b
227 c
338 d
44009 e
Expresión regular `to_replace`
>>> df = pd.DataFrame('A':['bat','foo','bait'],...'B':['abc','bar','xyz'])>>> df.replace(to_replace=r'^ba.$', value='new', regex=True)
A B
0 new abc
1 foo new
2 bait xyz
>>> df.replace('A':r'^ba.$','A':'new', regex=True)
A B
0 new abc
1 foo bar
2 bait xyz
>>> df.replace(regex=r'^ba.$', value='new')
A B
0 new abc
1 foo new
2 bait xyz
>>> df.replace(regex=r'^ba.$':'new','foo':'xyz')
A B
0 new abc
1 xyz new
2 bait xyz
>>> df.replace(regex=[r'^ba.$','foo'], value='new')
A B
0 new abc
1 new new
2 bait xyz
Compare el comportamiento de s.replace('a':None)
y s.replace('a',None)
para comprender las peculiaridades del para reemplazar parámetro:
>>> s = pd.Series([10,'a','a','b','a'])
Cuando uno usa un dict como el para reemplazar valor, es como si los valores en el dict fueran iguales a los valor parámetro. s.replace('a':None)
es equivalente a s.replace(to_replace='a':None,value=None,method=None)
:
>>> s.replace('a':None)0101None2None3 b
4None
dtype:object
Cuando value=None
y para reemplazar es un escalar, una lista o una tupla, reemplazar usa el parámetro de método (‘pad’ predeterminado) para hacer el reemplazo. Entonces, esta es la razón por la que los valores ‘a’ se reemplazan por 10 en las filas 1 y 2 y ‘b’ en la fila 4 en este caso. El comando s.replace('a',None)
es en realidad equivalente a s.replace(to_replace='a',value=None,method='pad')
:
>>> s.replace('a',None)0101102103 b
4 b
dtype:object