Python Pandas replace NaN in one column with value from corresponding row of second column
Assuming your DataFrame is in df
:
df.Temp_Rating.fillna(df.Farheit, inplace=True)
del df['Farheit']
df.columns = 'File heat Observations'.split()
First replace any NaN
values with the corresponding value of df.Farheit
. Delete the 'Farheit'
column. Then rename the columns. Here's the resulting DataFrame
:
The above mentioned solutions did not work for me. The method I used was:
df.loc[df['foo'].isnull(),'foo'] = df['bar']
An other way to solve this problem,
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)
returns:
(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)