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


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


Pandas DataFrame.product(~) 方法计算 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。默认情况下,min_count=0

返回值

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

例子

考虑以下 DataFrame :

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



   A  B
0  2  4
1  3  5

列式产品

计算每列的乘积:

df.product()   # or axis=0



A     6
B    20
dtype: int64

行乘积

要计算每行的乘积,请设置 axis=1

df.product(axis=1)



0     8
1    15
dtype: int64

指定skipna

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

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



   A
0  3.0
1  NaN
2  5.0

默认情况下, skipna=True ,这意味着忽略缺失值:

df.product()   # skipna=True



A    15.0
dtype: float64

考虑缺失值:

df.product(skipna=False)



A   NaN
dtype: float64

请注意,如果行/列包含一个或多个缺失值,则该行/列的乘积将为 NaN

指定numeric_only

考虑以下 DataFrame :

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



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

此处, BC 列都是非数字的,但主要区别在于,乘积是为 B 定义的,而不是为 C 定义的。

回想一下, True 布尔值的内部表示是 1 ,因此操作 2*True 实际上计算为 2

2 * True



2

另一方面,"6"*"7" 抛出错误:

"6" * "7"



TypeError: can't multiply sequence by non-int of type 'str'
None

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

df.product()   # numeric_only=None



A    20
B    2
dtype: object

在这里,请注意列 C 的乘积是不可计算的,因为 "6"*"7" 会导致错误。通过传入 None ,导致这些无效产品的行/列将被简单地忽略,而不会引发错误。

False

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

df.product(numeric_only=False)



TypeError: can't multiply sequence by non-int of type 'str'

在这里,我们最终出现错误,因为正如所解释的,未定义列 C 的乘积 "6"*"7"

True

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

df.product(numeric_only=True)



A    20
dtype: int64

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

相关用法


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