Pandas DataFrame.sum(~)
方法计算源 DataFrame 的每行或每列的总和。
参数
1.axis
| int
或 string
| optional
是否按行或按列计算总和:
轴 |
说明 |
---|---|
|
计算每列的总和。 |
|
计算每行的总和。 |
默认情况下,axis=0
。
2. skipna
| boolean
| optional
是否忽略缺失值(NaN
)。默认情况下,skipna=True
。
3. level
| string
或 int
| optional
要考虑进行求和的级别的名称或整数索引。仅当您的 DataFrame 是多索引时,这才相关。
4. numeric_only
| None
或 boolean
| optional
允许的值如下:
值 |
说明 |
---|---|
|
仅考虑数字行/列(例如 |
|
尝试使用所有类型(例如字符串和日期)进行计算,并在求和无效时抛出错误。 |
|
尝试使用所有类型进行计算,并忽略所有不允许求和的行/列不会引发错误. |
为了使求和有效,+
运算符必须在类型之间明确定义。
默认情况下,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
此处, B
和 C
列都包含混合类型,但主要区别在于,求和是为 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
请注意B
和C
列如何被忽略,因为它们包含混合类型。
空的情况DataFrame
计算空的 DataFrame 或 Series 的总和将得到 0
:
df = pd.DataFrame({"A":[]})
df.sum()
A 0.0
dtype: float64
相关用法
- Python PySpark DataFrame summary方法用法及代码示例
- Python Pandas DataFrame sub方法用法及代码示例
- Python Pandas DataFrame sample方法用法及代码示例
- Python Pandas DataFrame swaplevel方法用法及代码示例
- Python PySpark DataFrame sampleBy方法用法及代码示例
- Python Pandas DataFrame set_axis方法用法及代码示例
- Python Pandas DataFrame select_dtypes方法用法及代码示例
- Python PySpark DataFrame selectExpr方法用法及代码示例
- Python PySpark DataFrame show方法用法及代码示例
- Python PySpark DataFrame select方法用法及代码示例
- Python Pandas DataFrame stack方法用法及代码示例
- Python Pandas DataFrame shift方法用法及代码示例
- Python Pandas DataFrame sort_index方法用法及代码示例
- Python Pandas DataFrame size属性用法及代码示例
- Python Pandas DataFrame set_index方法用法及代码示例
- Python Pandas DataFrame swapaxes方法用法及代码示例
- Python PySpark DataFrame sort方法用法及代码示例
- Python PySpark DataFrame sample方法用法及代码示例
- Python Pandas DataFrame sem方法用法及代码示例
- Python Pandas DataFrame std方法用法及代码示例
- Python Pandas DataFrame shape属性用法及代码示例
- Python Pandas DataFrame sort_values方法用法及代码示例
- Python Pandas DataFrame slice_shift方法用法及代码示例
- Python Pandas DataFrame squeeze方法用法及代码示例
- Python Pandas DataFrame empty属性用法及代码示例
注:本文由纯净天空筛选整理自Isshin Inada大神的英文原创作品 Pandas DataFrame | sum method。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。