Pandas DataFrame DataFrame.apply()関数
-
pandas.DataFrame.apply()
の構文: -
コード例:
DataFrame.apply()
メソッド -
コード例:
DataFrame.apply()
を使用して各列に関数を適用する -
コード例:
DataFrame.apply()
メソッドで各行に関数を適用する -
コード例:
result_type
パラメータを指定するDataFrame.apply()
メソッド
pandas.DataFrame.apply()
関数は、入力関数を行に沿ったすべての要素に適用しますまたは、呼び出し元の Pandas DataFrame
の列。
pandas.DataFrame.apply()
の構文:
DataFrame.apply(func, axis=0, raw=False, result_type=None, args=(), **kwds)
パラメーター
func |
各行または列に適用される関数 |
axis |
行(axis = 0 )または列(axis = 1 )に沿って関数を適用する |
raw |
ブール。Series オブジェクト(raw = False )または ndarray オブジェクト(raw = True )として渡される行/列 |
result_type |
{expand 、reduce 、broadcast 、None } 操作の出力タイプは、axis = 1 (列)にのみ適用可能バージョン 0.23.0 の新機能 |
args |
関数 func の位置引数 |
**kwds |
関数 func のキーワード引数 |
戻り値
指定された軸に沿って入力関数を適用した後、DataFrame
を返します。
コード例:DataFrame.apply()
メソッド
import pandas as pd
df = pd.DataFrame({'X': [1, 2, 3,],
'Y': [4, 1, 8]})
print(df)
modified_df=df.apply(lambda x: x**2)
print(modified_df)
出力:
X Y
0 1 4
1 2 1
2 3 8
X Y
0 1 16
1 4 1
2 9 64
DataFrame.apply()
メソッドを使用して、lambda
関数 lambda x:x ** 2
を DataFrame
のすべての要素に適用します。
ラムダ関数は、Python で関数を定義する簡単な方法です。
lambda x:x ** 2
は、x
を入力として受け取り、x ** 2
を出力として返す関数を表します。
コード例:DataFrame.apply()
を使用して各列に関数を適用する
import pandas as pd
import numpy as np
df = pd.DataFrame({'X': [1, 2, 3,],
'Y': [4, 1, 8]})
print("Original DataFrame")
print(df)
modified_df=df.apply(np.sum)
print("Modified DataFrame")
print(modified_df)
出力:
Original DataFrame
X Y
0 1 4
1 2 1
2 3 8
Modified DataFrame
X 6
Y 13
dtype: int64
ここでは、axis = 0
(デフォルト値)であるため、各列に np.sum
が適用されます。
したがって、df.apply()
メソッドを使用した後、各列の要素の合計を取得します。
import pandas as pd
df = pd.DataFrame({'X': [1, 2, 3,],
'Y': [4, 1, 8]})
print(df)
modified_df=df.apply(lambda x: (x**2) if x.name == 'X' else x)
print(modified_df)
出力:
X Y
0 1 4
1 2 1
2 3 8
X Y
0 1 4
1 4 1
2 9 8
関数を特定の列にのみ適用する場合は、if
ステートメントを使用して関数の定義を変更し、列をフィルター処理します。この例では、関数は列名が X
の列のみの値を変更します。
コード例:DataFrame.apply()
メソッドで各行に関数を適用する
import pandas as pd
import numpy as np
df = pd.DataFrame({'X': [1, 2, 3,],
'Y': [4, 1, 8]})
print("Original DataFrame")
print(df)
modified_df=df.apply(np.sum, axis=1)
print("Modified DataFrame")
print(modified_df)
出力:
Original DataFrame
X Y
0 1 4
1 2 1
2 3 8
Modified DataFrame
0 5
1 3
2 11
dtype: int64
ここでは、この例では axis = 1
を設定したので、np.sum
が一度に各行に適用されます。
したがって、df.apply()
メソッドを使用した後、すべての行の個々の要素の合計を取得します。
import pandas as pd
df = pd.DataFrame({'X': [1, 2, 3,],
'Y': [4, 1, 8]})
print(df)
modified_df=df.apply(lambda x: (x**2) if x.name in [0,1] else x,
axis=1)
print(modified_df)
出力:
X Y
0 1 4
1 2 1
2 3 8
X Y
0 1 16
1 4 1
2 3 8
特定の行にのみ関数を適用する場合は、if
ステートメントを使用して関数定義を変更し、行をフィルター処理します。この例では、関数はインデックス 0
と 1
を持つ行のみの値、つまり 1 行目と 2 行目のみを変更します。
コード例:result_type
パラメータを指定する DataFrame.apply()
メソッド
result_type
パラメータのデフォルト値、つまり None
を使用すると、変更なしで DataFrame
が返されます。
import pandas as pd
df = pd.DataFrame({'X': [1, 2, 3,],
'Y': [4, 1, 8]})
print("Original DataFrame")
print(df)
modified_df=df.apply(lambda x:[1,1],axis=1)
print("Modified DataFrame")
print(modified_df)
出力:
Original DataFrame
X Y
0 1 4
1 2 1
2 3 8
Modified DataFrame
0 [1, 1]
1 [1, 1]
2 [1, 1]
dtype: object
上記の例では、各行が一度に関数に渡され、行の値は [1,1]
に設定されます。
関数が DataFrame
を操作した後で結果のタイプを変更する場合は、必要に応じて result_type
の値を設定できます。
import pandas as pd
df = pd.DataFrame({'X': [1, 2, 3,],
'Y': [4, 1, 8]})
print("Original DataFrame")
print(df)
modified_df=df.apply(lambda x:[1,1],
axis=1,
result_type='expand')
print("Modified DataFrame")
print(modified_df)
出力:
Original DataFrame
X Y
0 1 4
1 2 1
2 3 8
Modified DataFrame
0 1
0 1 1
1 1 1
2 1 1
result_type = 'expand'
を設定すると、すべてのリストのような値が DataFrame
の列に展開されます。
Suraj Joshi is a backend software engineer at Matrice.ai.
LinkedIn