missing - ¿Cómo hacer minúsculas en una columna de cadena de datos de python si tiene valores perdidos?
pandas groupby (4)
Copia tu columna de Dataframe y simplemente aplica
df = datos [''x''] newdf = df.str.lower ()
El siguiente código no funciona.
import pandas as pd
import numpy as np
df=pd.DataFrame([''ONE'',''Two'', np.nan],columns=[''x''])
xLower = df["x"].map(lambda x: x.lower())
¿Cómo debo modificarlo para obtener xLower = [''one'', ''two'', np.nan]? La eficiencia es importante ya que el marco de datos real es enorme.
Otra solución posible, en caso de que la columna no solo tenga cadenas, sino también números, es usar astype(str).str.lower()
porque de lo contrario, dado que un número no es una cadena, cuando se baja, devolverá NaN
, por lo tanto:
import pandas as pd
import numpy as np
df=pd.DataFrame([''ONE'',''Two'', np.nan],columns=[''x''])
xLower = df["x"].map(lambda x: x if type(x)!=str else x.lower())
print xLower
entonces nosotros tenemos:
$ print example.py
0 one
1 two
2 NaN
Name: x, dtype: object
y no
import pandas as pd
import numpy as np
df=pd.DataFrame([''ONE'',''Two'', np.nan,2],columns=[''x''])
xSecureLower = df[''x''].astype(str).str.lower()
xLower = df[''x''].str.lower()
Una posible solución:
>>> xSecureLower
0 one
1 two
2 NaN
3 2
Name: x, dtype: object
Y un resultado:
>>> xLower
0 one
1 two
2 NaN
3 NaN
Name: x, dtype: object
Aunque no estoy seguro de la eficiencia.
utilizar los métodos de cadena vectorizada pandas; Como en la documentación:
estos métodos excluyen valores faltantes / NA automáticamente
.str.lower()
es el primer ejemplo allí;
>>> df[''x''].str.lower()
0 one
1 two
2 NaN
Name: x, dtype: object