pythonpandasdataframenanfillna

Replace NaN in one column with value from corresponding row of second column


I am working with this Pandas DataFrame in Python.

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

I need to replace all NaNs in the Temp_Rating column with the value from the Farheit column.

This is what I need:

File        heat    Temp_Rating
   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

If I do a Boolean selection, I can pick out only one of these columns at a time. The problem is if I then try to join them, I am not able to do this while preserving the correct order.

How can I only find Temp_Rating rows with the NaNs and replace them with the value in the same row of the Farheit column?


Solution

  • 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:

        File  heat  Observations
    0      1  YesQ            75
    1      1   NoR           115
    2      1  YesA            63
    3      1   NoT            41
    4      1   NoY            80
    5      1  YesZ            12
    6      2  YesQ           111
    7      2   NoR            60
    8      2  YesA            19
    9      2   NoT            77
    10     2   NoY            21
    11     2  YesZ            54
    12     3  YesQ            84
    13     3   NoR            67
    14     3  YesA            94
    15     3   NoT            39
    16     3   NoY            46
    17     3  YesZ            81