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


Python pandas.DataFrame.apply用法及代碼示例


用法:

DataFrame.apply(func, axis=0, raw=False, result_type=None, args=(), **kwargs)

沿 DataFrame 的軸應用函數。

傳遞給函數的對象是 Series 對象,其索引是 DataFrame 的索引 (axis=0) 或 DataFrame 的列 (axis=1)。默認情況下(result_type=None),最終返回類型是從應用函數的返回類型推斷出來的。否則,它取決於result_type 參數。

參數

func函數

應用於每一列或每一行的函數。

axis{0 或 ‘index’,1 或 ‘columns’},默認 0

沿其應用函數的軸:

  • 0 或‘index’:將函數應用於每一列。

  • 1 或‘columns’:將函數應用於每一行。

raw布爾值,默認為 False

確定行或列是否作為 Series 或 ndarray 對象傳遞:

  • False :將每一行或每一列作為係列傳遞給函數。

  • True :傳遞的函數將接收 ndarray 對象。如果您隻是應用 NumPy 縮減函數,這將獲得更好的性能。

result_type{‘expand’, ‘reduce’, ‘broadcast’, 無},默認無

這些僅在axis=1(列)時起作用:

  • ‘expand’:list-like 結果將轉換為列。

  • ‘reduce’:如果可能,返回一個係列,而不是擴展 list-like 結果。這與‘expand’ 正好相反。

  • ‘broadcast’:results 會廣播到 DataFrame 的原始形狀,保留原始索引和列。

默認行為(無)取決於應用函數的返回值:list-like 結果將作為一係列返回。但是,如果應用函數返回一個係列,這些將擴展為列。

args元組

除了數組/係列之外,要傳遞給 func 的位置參數。

**kwargs

附加關鍵字參數作為關鍵字參數傳遞給 func

返回

Series或DataFrame

沿 DataFrame 的給定軸應用func 的結果。

注意

改變傳遞對象的函數可能會產生意外行為或錯誤,因此不受支持。有關更多詳細信息,請參閱使用用戶定義函數 (UDF) 方法進行變異。

例子

>>> df = pd.DataFrame([[4, 9]] * 3, columns=['A', 'B'])
>>> df
   A  B
0  4  9
1  4  9
2  4  9

使用 numpy 通用函數(在這種情況下與 np.sqrt(df) 相同):

>>> df.apply(np.sqrt)
     A    B
0  2.0  3.0
1  2.0  3.0
2  2.0  3.0

在任一軸上使用歸約函數

>>> df.apply(np.sum, axis=0)
A    12
B    27
dtype:int64
>>> df.apply(np.sum, axis=1)
0    13
1    13
2    13
dtype:int64

返回 list-like 將產生一個係列

>>> df.apply(lambda x:[1, 2], axis=1)
0    [1, 2]
1    [1, 2]
2    [1, 2]
dtype:object

傳遞 result_type='expand' 會將 list-like 結果擴展到 Dataframe 的列

>>> df.apply(lambda x:[1, 2], axis=1, result_type='expand')
   0  1
0  1  2
1  1  2
2  1  2

在函數內返回 Series 類似於傳遞 result_type='expand' 。生成的列名稱將是係列索引。

>>> df.apply(lambda x:pd.Series([1, 2], index=['foo', 'bar']), axis=1)
   foo  bar
0    1    2
1    1    2
2    1    2

傳遞result_type='broadcast'將確保相同的形狀結果,無論是函數返回list-like還是標量,並沿軸廣播。生成的列名稱將是原始名稱。

>>> df.apply(lambda x:[1, 2], axis=1, result_type='broadcast')
   A  B
0  1  2
1  1  2
2  1  2

相關用法


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