Pandas DataFrame のすべての行に関数を適用する

Samreena Aslam 2023年1月30日
  1. Pandas の基本構文 apply() 関数
  2. Pandas DataFrame の各行に lambda 関数を適用する
  3. Pandas の DataFrame の各行に NumPy 関数を適用する
  4. Pandas DataFrame の各行に引数を指定してユーザー定義関数を適用する
  5. 引数なしで 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 はすべての行に関数を適用します-ラムダ

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 はすべての行に関数を適用します-numpy

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 はすべての行に関数を適用します-ユーザー定義

引数なしで 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

Pandas はすべての行に関数を適用します-ユーザー定義

関連記事 - Pandas DataFrame