当前位置: 首页 > 知识库问答 >
问题:

Python将一列中的NaN替换为第二列对应行中的值

亢建木
2023-03-14

我在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

我需要用Farheit列中的值替换Temp_Rating列中的所有NaN。

这就是我需要的:

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

如果进行布尔选择,一次只能选择其中一列。问题是,如果我尝试加入他们,我无法在保持正确顺序的同时做到这一点。

我如何才能只找到带有NaNs的Temp\u Rating行,并用Farheit列的同一行中的值替换它们?

共有3个答案

郑西岭
2023-03-14

解决这个问题的另一种方法,

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)

返回:

(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)
寿高阳
2023-03-14

上述解决方案对我不起作用。我使用的方法是:

df.loc[df['foo'].isnull(),'foo'] = df['bar']
柳英豪
2023-03-14

假设您的数据帧位于df

df.Temp_Rating.fillna(df.Farheit, inplace=True)
del df['Farheit']
df.columns = 'File heat Observations'.split()

首先将任何NaN值替换为df.Farheit的相应值。删除'Farheit'列。然后重命名这些列。下面是生成的数据帧

 类似资料:
  • 本文向大家介绍Python 实现将numpy中的nan和inf,nan替换成对应的均值,包括了Python 实现将numpy中的nan和inf,nan替换成对应的均值的使用技巧和注意事项,需要的朋友参考一下 nan:not a number inf:infinity;正无穷 numpy中的nan和inf都是float类型 t!=t 返回bool类型的数组(矩阵) np.count_nonzero(

  • 问题内容: 我有一个数据框如下 当我尝试将一个函数应用于“金额”列时,出现以下错误。 我已经尝试过使用数学模块中的来应用函数。我已经尝试过属性。我已经尝试过的属性。我还尝试过在函数中使用语句。我还看了这篇文章如何在R数据帧中用零替换NA值?同时查看其他文章。我尝试过的所有方法均无效或无法识别NaN。任何提示或解决方案将不胜感激。 问题答案: 我相信DataFrame.fillna()会为你做到这一

  • 我想用相邻列中的值替换一列中的空值,例如,如果我 我希望它是: 尝试过 但没有工作,它说值应该是浮点数、int、长、字符串或判决 有什么想法吗?

  • 问题内容: 我有一个这样的Pandas DataFrame: 我只想在值等于0的情况下用第二列()中的值替换值,然后(对于剩余的零值),再次使用第三列()进行替换。期望的结果是下一个: 我使用该函数完成了此操作,但它似乎太慢了。我认为这一定是一种更快的方法。 使用其他功能而不是该功能,有没有更快的方法呢? 问题答案: 使用起来更快。使用与您使用类似的模式: 但是,使用嵌套稍微快一点: 时机 使用以

  • 我的数据帧中有一个值列表,我想用空字符串替换NaN值。 到目前为止,我所尝试的都不起作用:

  • 我在尝试用空值替换Spark数据帧特定列的值时遇到了一个问题。我有一个超过50列的数据框架,其中两列是关键列。我想用相同的模式创建一个新的数据框,新的数据框应该具有来自键列的值,而非键列中的值应该为null。我尝试了以下方法,但遇到了问题: 当我在中只有字符串类型列时,这种方法很好。但是我有一些双类型和int类型的列,这是抛出错误的,因为rdd是一个空字符串列表。 为了避免这种情况,我尝试将作为空