Python Pandas replace NaN in one column with value from corresponding row of second column

后端 未结 3 2119
遥遥无期
遥遥无期 2020-12-04 08:17

I am working with this Pandas DataFrame in Python.

File    heat    Farheit Temp_Rating
   1    YesQ         75         N/A
   1    NoR         115         N/         


        
相关标签:
3条回答
  • 2020-12-04 08:59

    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)
    
    0 讨论(0)
  • 2020-12-04 09:06

    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:

    resulting DataFrame

    0 讨论(0)
  • 2020-12-04 09:08

    The above mentioned solutions did not work for me. The method I used was:

    df.loc[df['foo'].isnull(),'foo'] = df['bar']
    
    0 讨论(0)
提交回复
热议问题