Pandas DataFrame のすべての行に関数を適用する
-
Pandas の基本構文
apply()
関数 -
Pandas DataFrame の各行に
lambda
関数を適用する -
Pandas の
DataFrame
の各行にNumPy
関数を適用する -
Pandas
DataFrame
の各行に引数を指定してユーザー定義関数を適用する - 引数なしで Pandas DataFrame の各行にユーザー定義関数を適用する
Pandas は Python ライブラリであり、データ分析と操作タスクをより簡単に実行するためのクラスと関数の膨大なリストを提供します。Pandas DataFrame のデータを行と列の形式で操作します。したがって、ほとんどの場合、目的の結果を得るには、各行または列に適切な関数を適用する必要があります。
この記事では、Pandas を使用して Pandas DataFrame のすべての行に関数を適用する方法について説明します。さらに、lambda
関数、ユーザー定義関数、NumPy
関数などのさまざまな関数を Pandas DataFrame の各行に適用する方法を示します。
Pandas の基本構文 apply()
関数
次の基本的な構文は、Pandas の apply()
関数を適用するために使用されます。
DataFrame.apply(function, axis, args=())
上記の構文では、関数は各行に適用されます。を参照してください。軸
は、関数が DataFrame に適用される引数です。デフォルトでは、axis
値は 0
です。関数がすべての行に適用される場合、axis=1
の値。args
は、関数に渡されるタプルまたは引数のリストを表します。
Pandas の apply()
関数を使用すると、DataFrame のすべての行にさまざまな関数を簡単に適用できます。次のリストされた方法は、この目標を達成するのに役立ちます。
Pandas DataFrame の各行に lambda
関数を適用する
DataFrame
のすべての行に lambda
関数を適用するために、DataFrame
の最初の引数として lambda
関数を使用し、dataframe.apply()
の 2 番目の引数として axis=1
を渡しました。上記で作成した DataFrame を使用して。
DataFrame のすべての行に lambda
関数を適用する方法を確認するには、次の例を試してください。
コード例:
import pandas as pd
import numpy as np
from IPython.display import display
# List of Tuples data
data = [
(1, 34, 23),
(11, 31, 11),
(22, 16, 21),
(33, 32, 22),
(44, 33, 27),
(55, 35, 11),
]
# Create a DataFrame object
dataframe = pd.DataFrame(data, columns=list("ABC"))
print("Original Dataframe before applying lambda function: ", sep="\n")
display(dataframe)
# Apply a lambda function to each row by adding 10
new_dataframe = dataframe.apply(lambda x: x + 10, axis=1)
print("Modified New Dataframe by applying lambda function on each row:")
display(new_dataframe)
出力:
Original Dataframe before applying lambda function:
A B C
0 1 34 23
1 11 31 11
2 22 16 21
3 33 32 22
4 44 33 27
5 55 35 11
Modified Dataframe by applying lambda function on each row:
A B C
0 11 44 33
1 21 41 21
2 32 26 31
3 43 42 32
4 54 43 37
5 65 45 21
Pandas の DataFrame
の各行に NumPy
関数を適用する
dataframe.apply()
に引数として渡された NumPy
関数を使用することもできます。次の例では、NumPy
関数をすべての行に適用し、各値の平方根を計算します。
コード例:
import pandas as pd
import numpy as np
from IPython.display import display
def main():
# List of Tuples
data = [
(2, 3, 4),
(3, 5, 10),
(44, 16, 2),
(55, 32, 12),
(60, 33, 27),
(77, 35, 11),
]
# Create a DataFrame object
dataframe = pd.DataFrame(data, columns=list("ABC"))
print("Original Dataframe", sep="\n")
display(dataframe)
# Apply a numpy function to every row by taking square root of each value
new_dataframe = dataframe.apply(np.sqrt, axis=1)
print("Modified Dataframe by applying numpy function on each row:", sep="\n")
display(new_dataframe)
if __name__ == "__main__":
main()
出力:
Original Dataframe
A B C
0 2 3 4
1 3 5 10
2 44 16 2
3 55 32 12
4 60 33 27
5 77 35 11
Modified Dataframe by applying numpy function on each row:
A B C
0 1.414214 1.732051 2.000000
1 1.732051 2.236068 3.162278
2 6.633250 4.000000 1.414214
3 7.416198 5.656854 3.464102
4 7.745967 5.744563 5.196152
5 8.774964 5.916080 3.316625
Pandas DataFrame
の各行に引数を指定してユーザー定義関数を適用する
引数を指定して、dataframe.apply
のパラメーターとして user defined
関数を渡すこともできます。次の例では、引数 args=[2]
を使用してユーザー定義関数を渡しました。各行の値の系列は 2 倍されます。
次の例を参照してください。
サンプルコード:
import pandas as pd
import numpy as np
from IPython.display import display
def multiplyData(x, y):
return x * y
def main():
# List of Tuples
data = [
(2, 3, 4),
(3, 5, 10),
(44, 16, 2),
(55, 32, 12),
(60, 33, 27),
(77, 35, 11),
]
# Create a DataFrame object
dataframe = pd.DataFrame(data, columns=list("ABC"))
print("Original Dataframe", sep="\n")
display(dataframe)
# Apply a user defined function with arguments to each row of Pandas dataframe
new_dataframe = dataframe.apply(multiplyData, axis=1, args=[2])
print(
"Modified Dataframe by applying user defined function on each row of pandas dataframe:",
sep="\n",
)
display(new_dataframe)
if __name__ == "__main__":
main()
出力:
Original Dataframe
A B C
0 2 3 4
1 3 5 10
2 44 16 2
3 55 32 12
4 60 33 27
5 77 35 11
Modified Dataframe by applying user defined function on each row of pandas dataframe:
A B C
0 4 6 8
1 6 10 20
2 88 32 4
3 110 64 24
4 120 66 54
5 154 70 22
引数なしで Pandas DataFrame の各行にユーザー定義関数を適用する
引数なしですべての行にユーザー定義関数を適用することもできます。次の例を参照してください。
コード例:
import pandas as pd
import numpy as np
from IPython.display import display
def userDefined(x):
return x * 4
def main():
# List of Tuples
data = [
(2, 3, 4),
(3, 5, 10),
(44, 16, 2),
(55, 32, 12),
(60, 33, 27),
(77, 35, 11),
]
# Create a DataFrame object
dataframe = pd.DataFrame(data, columns=list("ABC"))
print("Original Dataframe", sep="\n")
display(dataframe)
# Apply a user defined function without arguments to each row of Pandas dataframe
new_dataframe = dataframe.apply(userDefined, axis=1)
print(
"Modified Dataframe by applying user defined function on each row of pandas dataframe:",
sep="\n",
)
display(new_dataframe)
if __name__ == "__main__":
main()
出力:
Original Dataframe
A B C
0 2 3 4
1 3 5 10
2 44 16 2
3 55 32 12
4 60 33 27
5 77 35 11
Modified Dataframe by applying user defined function on each row of pandas dataframe:
A B C
0 8 12 16
1 12 20 40
2 176 64 8
3 220 128 48
4 240 132 108
5 308 140 44