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


Python Pandas DataFrame rmod方法用法及代碼示例

Pandas DataFrame.rmod(~) 方法計算源 DataFrame 和另一個標量、序列、Series 或 DataFrame 中的值的模,即:

other % DataFrame

請注意,這與 DataFrame.mod(~) 正好相反,它的作用是:

DataFrame % other
注意

除非您使用參數 axislevelfill_value ,否則 rmod(~) 相當於使用 % 運算符計算模數。

參數

1.other | scalarsequenceSeriesDataFrame

生成的 DataFrame 將是源 DataFrame 的 other 的模。

2. axis | intstring | optional

是否為源DataFrame的每一列或每一行廣播other

說明

"index"0

每列廣播other

"columns"1

每行廣播 other

僅當源 DataFrame 的形狀與 other 的形狀不匹配時,這才相關。默認情況下,axis=1

3. level | intstring | optional

要考慮的級別的名稱或整數索引。僅當您的 DataFrame 是多索引時,這才相關。

4. fill_value | floatNone | optional

在計算模數之前替換 NaN 的值。如果兩對條目都是 NaN ,那麽其結果也將是 NaN 。默認情況下,fill_value=None

返回值

由模計算出的新DataFrame。

例子

基本用法

考慮以下數據幀:

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



   A  B  |     A  B
0  2  4  |  0  9  7
1  3  5  |  1  8  6

計算模:

df.rmod(df_other)



   A  B
0  1  3
1  2  1

在這裏,我們計算以下逐元素模:

9%2 7%4
8%3 6%5

請注意,這相當於:

df_other % df



   A  B
0  1  3
1  2  1

廣播

考慮以下 DataFrame :

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



   A  B
0  3  5
1  4  6
逐行取模

默認情況下, axis=1 ,這意味著 other 將為 df 中的每一行廣播:

df.rmod([8,9])   # axis=1



   A  B
0  2  4
1  0  3

在這裏,我們計算以下逐元素模:

8%3 9%5
8%4 9%6
逐列取模

要為 df 中的每一列廣播 other,請像這樣設置 axis=0

df.rmod([8,9], axis=0)



   A  B
0  2  3
1  1  3

在這裏,我們計算以下逐元素模:

8%3 8%5
9%4 9%6

指定fill_value

考慮以下 DataFrame :

df = pd.DataFrame({"A":[2,np.NaN], "B":[np.NaN,3]})
df_other = pd.DataFrame({"A":[8,9],"B":[np.NaN,np.NaN]})



   A    B    |     A  B
0  2.0  NaN  |  0  8  NaN
1  NaN  3.0  |  1  9  NaN

默認情況下,當我們使用 rmod(~) 計算模數時,任何使用 NaN 的操作都會產生 NaN

df.rmod(df_other)



   A    B
0  0.0  NaN
1  NaN  NaN

在使用 fill_value 參數計算模數之前,我們可以填充 NaN 值:

df.rmod(df_other, fill_value=5)



   A    B
0  0.0  NaN
1  4.0  2.0

在這裏,請注意當運算涉及兩個 NaN 時,無論 fill_value 為何,結果模數仍將是 NaN

相關用法


注:本文由純淨天空篩選整理自Isshin Inada大神的英文原創作品 Pandas DataFrame | rmod method。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。