當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。