Pandas DataFrame DataFrame.transform() 関数
Minahil Noor
2023年1月30日
-
pandas.DataFrame.transform()
の構文 -
コード例:
DataFrame.transform()
-
コード例:
DataFrame.transform()
でsqrt
文字列を関数として使用する -
コード例:
DataFrame.transform()
で関数のリストを渡す -
DataFrame.apply()
vsDataFrame.transform()
関数
Python Pandas DataFrame.transform()
は DataFrame
に関数を適用して DataFrame
を変形します。適用する関数は transform()
関数のパラメータとして渡されます。変換された DataFrame
の軸の長さは元の DataFrame
と同じでなければならません。
pandas.DataFrame.transform()
の構文
DataFrame.transform(func, axis, *args, **kwargs)
パラメータ
func |
これは DataFrame に適用される関数です。これは DataFrame の値に変化をもたらす。関数、関数名文字列、関数や関数名のリスト、軸ラベルの辞書を指定することができます。 |
axis |
これは整数または文字列です。これは行または列のいずれかの軸を指定します。行には 0 または index 、列には 1 または columns を指定することができます。 |
*args |
これらは関数に渡す位置引数です。 |
**kwargs |
これらは、関数に渡す追加のキーワード引数です。 |
戻り値
変換された DataFrame
は、元の DataFrame
と同じ長さの DataFrame
を返します。返された DataFrame
の長さが不等長の場合、この関数は ValueError
を発生させます。
コード例:DataFrame.transform()
まず、この関数を DataFrame
の各値に数値を加えて試してみましょう。
import pandas as pd
dataframe = pd.DataFrame({
'A':
{0: 6,
1: 20,
2: 80,
3: 78,
4: 95},
'B':
{0: 60,
1: 50,
2: 7,
3: 67,
4: 54}
})
print(dataframe)
DataFrame
の例は、
A B
0 6 60
1 20 50
2 80 7
3 78 67
4 95 54
5 98 34
この関数の必須パラメータは 1つだけです。ここでは、この関数を用いて DataFrame
の各値に 20 を加算します。
import pandas as pd
dataframe = pd.DataFrame(
{"A": {0: 6, 1: 20, 2: 80, 3: 78, 4: 95}, "B": {0: 60, 1: 50, 2: 7, 3: 67, 4: 54}}
)
dataframe1 = dataframe.transform(func=lambda x: x + 20)
print(dataframe1)
出力:
A B
0 26 80
1 40 70
2 100 27
3 98 87
4 115 74
5 118 54
ここでは、lambda
キーワードを用いて匿名の加算関数を宣言します。
コード例:DataFrame.transform()
で sqrt
文字列を関数として使用する
import pandas as pd
dataframe = pd.DataFrame(
{"A": {0: 6, 1: 20, 2: 80, 3: 78, 4: 95}, "B": {0: 60, 1: 50, 2: 7, 3: 67, 4: 54}}
)
dataframe1 = dataframe.transform(func="sqrt")
print(dataframe1)
出力:
A B
0 2.449490 7.745967
1 4.472136 7.071068
2 8.944272 2.645751
3 8.831761 8.185353
4 9.746794 7.348469
5 9.899495 5.830952
ここでは、lambda
関数を渡す代わりに、関数名を文字列として渡しています。
コード例:DataFrame.transform()
で関数のリストを渡す
import pandas as pd
dataframe = pd.DataFrame(
{"A": {0: 6, 1: 20, 2: 80, 3: 78, 4: 95}, "B": {0: 60, 1: 50, 2: 7, 3: 67, 4: 54}}
)
dataframe1 = dataframe.transform(func=["sqrt", "exp"])
print(dataframe1)
出力:
A B
sqrt exp sqrt exp
0 2.449490 4.034288e+02 7.745967 1.142007e+26
1 4.472136 4.851652e+08 7.071068 5.184706e+21
2 8.944272 5.540622e+34 2.645751 1.096633e+03
3 8.831761 7.498417e+33 8.185353 1.252363e+29
4 9.746794 1.811239e+41 7.348469 2.830753e+23
2つの関数名のリスト、すなわち ['sqrt', 'exp']
を func
として渡しました。返された DataFrame
には、追加の関数のために 2つの列が追加されています。
DataFrame.apply()
vs DataFrame.transform()
関数
また、DataFrame.apply()
関数を使用しても上記の結果を得ることができます。しかし、この 2つの関数を比較してみると、複雑な操作を処理するには DataFrame.transform()
関数の方が効率が良いと言えるでしょう。