【问题标题】:Different behaviour of numpy sum min max functions when aggregating or when applied to list or arraynumpy sum min max 函数在聚合或应用于列表或数组时的不同行为
【发布时间】:2019-09-13 12:07:52
【问题描述】:

当涉及到 nan 值时,将相同的 numpy 函数作为 groupby 的聚合函数或应用于相同的值列表时,我看到不同的行为。

这适用于 np.sum np.min np.max 和 np.mean 聚合函数的行为看起来与使用 np.nansum、np、nanmin 等时相同

例如

import pandas as pd
import numpy as np
xx = pd.DataFrame([['A', 1.,  2.,      3.],
                   ['A', 3.,  np.nan,  4.],
                   ['B', 5.,  6.,      np.nan],
                   ['B', 7.,  8.,      9.]])

xx.groupby(0).agg(np.sum)

给予

       1     2     3
0           
A    4.0   2.0   7.0
B   12.0  14.0   9.0

但是np.array([np.nan,9.]).sum()np.sum(np.array([np.nan,9]))np.sum([np.nan,9])他们都输出nan

我希望聚合函数也能生成 nan,而我必须使用 np.nansum 生成输出

熊猫 0.24.2,numpy 1.16.2

【问题讨论】:

标签: python pandas numpy nan aggregation


【解决方案1】:

区别来自熊猫行为而不是numpy.sum()np.NaN 被自动排除在 pandas.groupby

import pandas as pd
import numpy as np
xx = pd.DataFrame([['A', np.nan],
                   ['A', 4.],
                   ['B', 1],
                   ['B', 2]])

xx.groupby(0).count()

输出

   1
0   
A  1
B  2

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多