当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python Pandas DataFrame sum方法用法及代码示例


Pandas DataFrame.sum(~) 方法计算源 DataFrame 的每行或每列的总和。

参数

1.axis | intstring | optional

是否按行或按列计算总和:

说明

"index"0

计算每列的总和。

"columns"1

计算每行的总和。

默认情况下,axis=0

2. skipna | boolean | optional

是否忽略缺失值(NaN)。默认情况下,skipna=True

3. level | stringint | optional

要考虑进行求和的级别的名称或整数索引。仅当您的 DataFrame 是多索引时,这才相关。

4. numeric_only | Noneboolean | optional

允许的值如下:

说明

True

仅考虑数字行/列(例如 floatintboolean )。

False

尝试使用所有类型(例如字符串和日期)进行计算,并在求和无效时抛出错误。

None

尝试使用所有类型进行计算,并忽略所有不允许求和的行/列不会引发错误.

为了使求和有效,+ 运算符必须在类型之间明确定义。

默认情况下,numeric_only=None

5. min_count | int | optional

执行求和必须出现的最小数值数。如果少于min_count值(不包括NaN),则返回NaN。默认情况下,没有设置最小值。

返回值

如果指定了level参数,则将返回DataFrame。否则,将返回Series

例子

考虑以下 DataFrame :

df = pd.DataFrame({"A":[2,3], "B":[4,5]})
df



   A  B
0  2  4
1  3  5

逐列求和

要计算每列的总和:

df.sum()   # axis=0



A    5
B    9
dtype: int64

这里,返回类型是Series

逐行求和

要计算每行的总和,请设置 axis=1

df.sum(axis=1)



0    6
1    8
dtype: int64

指定skipna

考虑以下带有缺失值的DataFrame:

df = pd.DataFrame({"A":[2,pd.np.nan], "B":[4,5]})
df



   A    B
0  2.0  4
1  NaN  5

默认情况下, skipna=True ,这意味着在计算中忽略 NaN

df.sum()



A    2.0
B    9.0
dtype: float64

设置为 skipna=False 将考虑 NaN

df.sum(skipna=False)



A    NaN
B    9.0
dtype: float64

我们对 A 列的总和得到 NaN 的原因是,任何涉及 NaN 的算术计算都会产生 NaN

指定numeric_only

考虑以下 DataFrame :

df = pd.DataFrame({"A":[4,5], "B":[2,True], "C":["6",False]})
df



   A  B     C
0  4  2     "6"
1  5  True  False

此处, BC 列都包含混合类型,但主要区别在于,求和是为 B 定义的,而不是为 C 定义的。回想一下, True 布尔值的内部表示是 1 ,因此操作 2+True 实际上计算为 3

2 + True



3

另一方面,"6"+False 抛出错误:

6 + "False"



TypeError: unsupported operand type(s) for +: 'int' and 'str'
None

默认情况下, numeric_only=None ,这意味着混合类型的行/列也会被考虑:

df.sum(numeric_only=None)



A    9
B    3
dtype: int64

在这里,注意如何在列上执行求和B,但不是在C。通过传入None,导致无效求和的行/列将被忽略没有抛出错误.

False

通过设置 numeric_only=False ,将再次考虑混合类型的行/列,但无法求和时会抛出错误:

df.sum(numeric_only=False)



TypeError: can only concatenate str (not "bool") to str

在这里,我们最终得到一个错误,因为 C 列包含混合类型,其中未定义 + 操作。

True

通过设置 numeric_only=True ,仅考虑数字行/列:

df.sum(numeric_only=True)



A    9
dtype: int64

请注意BC 列如何被忽略,因为它们包含混合类型。

空的情况DataFrame

计算空的 DataFrame 或 Series 的总和将得到 0

df = pd.DataFrame({"A":[]})
df.sum()



A    0.0
dtype: float64

相关用法


注:本文由纯净天空筛选整理自Isshin Inada大神的英文原创作品 Pandas DataFrame | sum method。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。