python-2.7 - recorrer - replace nan pandas
Python Pandas reemplaza NaN en una columna con el valor de la fila correspondiente de la segunda columna (3)
Estoy trabajando con este Pandas DataFrame en Python 2.7.
File heat Farheit Temp_Rating
1 YesQ 75 N/A
1 NoR 115 N/A
1 YesA 63 N/A
1 NoT 83 41
1 NoY 100 80
1 YesZ 56 12
2 YesQ 111 N/A
2 NoR 60 N/A
2 YesA 19 N/A
2 NoT 106 77
2 NoY 45 21
2 YesZ 40 54
3 YesQ 84 N/A
3 NoR 67 N/A
3 YesA 94 N/A
3 NoT 68 39
3 NoY 63 46
3 YesZ 34 81
Necesito reemplazar todos los NaN en la columna
Temp_Rating
con el valor de la columna
Farheit
.
Esto es lo que necesito:
File heat Observation
1 YesQ 75
1 NoR 115
1 YesA 63
1 YesQ 41
1 NoR 80
1 YesA 12
2 YesQ 111
2 NoR 60
2 YesA 19
2 NoT 77
2 NoY 21
2 YesZ 54
3 YesQ 84
3 NoR 67
3 YesA 94
3 NoT 39
3 NoY 46
3 YesZ 81
Si hago una selección booleana, puedo elegir solo una de estas columnas a la vez. El problema es que si trato de unirme a ellos, no puedo hacerlo mientras mantengo el orden correcto.
¿Cómo puedo encontrar
Temp_Rating
filas
Temp_Rating
con
NaN
s y reemplazarlas con el valor en la misma fila de la columna
Farheit
?
Las soluciones mencionadas anteriormente no funcionaron para mí. El método que utilicé fue:
df.loc[df[''foo''].isnull(),''foo''] = df[''bar'']
Otra forma de resolver este problema,
import pandas as pd
import numpy as np
ts_df = pd.DataFrame([[1,"YesQ",75,],[1,"NoR",115,],[1,"NoT",63,13],[2,"YesT",43,71]],columns=[''File'',''heat'',''Farheit'',''Temp''])
def fx(x):
if np.isnan(x[''Temp'']):
return x[''Farheit'']
else:
return x[''Temp'']
print(1,ts_df)
ts_df[''Temp'']=ts_df.apply(lambda x : fx(x),axis=1)
print(2,ts_df)
devoluciones:
(1, File heat Farheit Temp
0 1 YesQ 75 NaN
1 1 NoR 115 NaN
2 1 NoT 63 13.0
3 2 YesT 43 71.0)
(2, File heat Farheit Temp
0 1 YesQ 75 75.0
1 1 NoR 115 115.0
2 1 NoT 63 13.0
3 2 YesT 43 71.0)
Suponiendo que su DataFrame está en
df
:
df.Temp_Rating.fillna(df.Farheit, inplace=True)
del df[''Farheit'']
df.columns = ''File heat Observations''.split()
Primero reemplace los valores de
NaN
con el valor correspondiente de
df.Farheit
.
Eliminar la columna
''Farheit''
.
Luego cambie el nombre de las columnas.
Aquí está el
DataFrame
resultante: