当数据中缺少值时,Pandas DataFrame max()和apply(max)返回不同的值

时间:2019-04-06 05:44:38

标签: python pandas dataframe

我正在研究使用熊猫进行数据操作的基础知识,并且在进行其中一项练习时,我发现max()方法的工作中有一些奇怪的行为,即数据中缺少值。这是一个玩具示例。

首先创建一个玩具数据

df = pd.DataFrame({'A': [1, np.nan], 'B': [np.nan, 1]})

这是一个2x2的DataFrame。列之间的唯一区别是,第二列的第一行中缺少一个值,而第一列中的第二行中则缺少一个值。

    A   B
0   1.0 NaN
1   NaN 1.0

现在,我尝试以不同的方式在每一列中找到最大值

  1. 应用DataFrame.max()方法。

    df.max()        
    

    它提供了我期望得到的结果

    A    1.0
    B    1.0
    dtype: float64
    
  2. 使用DataFrame.apply()方法并将max用作此方法的参数

    df.apply(max)
    

    结果是

    A    1.0
    B    NaN
    dtype: float64
    

    这出乎意料的是,据报告B列的最大值为NaN。我认为原因是第一行中的NaN值。

  3. 使用DataFrame.apply()方法并将'max'用作此方法的参数

    df.apply('max')
    

    这是预期的结果。

    A    1.0
    B    1.0
    dtype: float64
    

为什么第二种方法的结果与其他两种方法不同?

0 个答案:

没有答案