我正在研究使用熊猫进行数据操作的基础知识,并且在进行其中一项练习时,我发现max()
方法的工作中有一些奇怪的行为,即数据中缺少值。这是一个玩具示例。
首先创建一个玩具数据
df = pd.DataFrame({'A': [1, np.nan], 'B': [np.nan, 1]})
这是一个2x2的DataFrame。列之间的唯一区别是,第二列的第一行中缺少一个值,而第一列中的第二行中则缺少一个值。
A B
0 1.0 NaN
1 NaN 1.0
现在,我尝试以不同的方式在每一列中找到最大值
应用DataFrame.max()
方法。
df.max()
它提供了我期望得到的结果
A 1.0
B 1.0
dtype: float64
使用DataFrame.apply()
方法并将max
用作此方法的参数
df.apply(max)
结果是
A 1.0
B NaN
dtype: float64
这出乎意料的是,据报告B列的最大值为NaN
。我认为原因是第一行中的NaN
值。
使用DataFrame.apply()
方法并将'max'
用作此方法的参数
df.apply('max')
这是预期的结果。
A 1.0
B 1.0
dtype: float64
为什么第二种方法的结果与其他两种方法不同?