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


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


用法:

DataFrame.transform(func, axis=0, *args, **kwargs)

在 self 上調用 func 生成與 self 具有相同軸形狀的 DataFrame。

參數

func函數,str,list-like 或 dict-like

用於轉換數據的函數。如果是函數,則必須在傳遞 DataFrame 或傳遞給 DataFrame.apply 時工作。如果 func 既是 list-like 又是 dict-like,則 dict-like 行為優先。

接受的組合是:

  • function

  • 字符串函數名

  • list-like 的函數和/或函數名稱,例如[np.exp, 'sqrt']

  • 軸標簽的dict-like -> 函數、函數名稱或此類的list-like。

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

如果為 0 或 ‘index’:將函數應用於每一列。如果為 1 或 ‘columns’:將函數應用於每一行。

*args

要傳遞給 func 的位置參數。

**kwargs

要傳遞給 func 的關鍵字參數。

返回

DataFrame

一個必須與 self 具有相同長度的 DataFrame。

拋出

ValueError如果返回的 DataFrame 的長度與 self 不同。

注意

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

例子

>>> df = pd.DataFrame({'A':range(3), 'B':range(1, 4)})
>>> df
   A  B
0  0  1
1  1  2
2  2  3
>>> df.transform(lambda x:x + 1)
   A  B
0  1  2
1  2  3
2  3  4

即使生成的 DataFrame 必須與輸入 DataFrame 具有相同的長度,也可以提供幾個輸入函數:

>>> s = pd.Series(range(3))
>>> s
0    0
1    1
2    2
dtype:int64
>>> s.transform([np.sqrt, np.exp])
       sqrt        exp
0  0.000000   1.000000
1  1.000000   2.718282
2  1.414214   7.389056

您可以在 GroupBy 對象上調用轉換:

>>> df = pd.DataFrame({
...     "Date":[
...         "2015-05-08", "2015-05-07", "2015-05-06", "2015-05-05",
...         "2015-05-08", "2015-05-07", "2015-05-06", "2015-05-05"],
...     "Data":[5, 8, 6, 1, 50, 100, 60, 120],
... })
>>> df
         Date  Data
0  2015-05-08     5
1  2015-05-07     8
2  2015-05-06     6
3  2015-05-05     1
4  2015-05-08    50
5  2015-05-07   100
6  2015-05-06    60
7  2015-05-05   120
>>> df.groupby('Date')['Data'].transform('sum')
0     55
1    108
2     66
3    121
4     55
5    108
6     66
7    121
Name:Data, dtype:int64
>>> df = pd.DataFrame({
...     "c":[1, 1, 1, 2, 2, 2, 2],
...     "type":["m", "n", "o", "m", "m", "n", "n"]
... })
>>> df
   c type
0  1    m
1  1    n
2  1    o
3  2    m
4  2    m
5  2    n
6  2    n
>>> df['size'] = df.groupby('c')['type'].transform(len)
>>> df
   c type size
0  1    m    3
1  1    n    3
2  1    o    3
3  2    m    4
4  2    m    4
5  2    n    4
6  2    n    4

相關用法


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