LoginSignup
0
0

pandas.DataFrame.applyの翻訳

Last updated at Posted at 2024-01-21

基本形

DataFrame.apply(func, axis=0, raw=False, result_type=None, args=(), by_row='compat', **kwargs)

概要

  • for文を使わなくてもデータフレームの行ごと、もしくは列ごとに関数を適用できる
    以下コードは公式からそのまま使ってます
# 使用するデータフレームの例
>>> df = pd.DataFrame([[4, 9]] * 3, columns=['A', 'B'])
>>> df
   A  B
0  4  9
1  4  9
2  4  9

パラメータ

func:関数

適用する関数

  • そのまま関数名を置け、lambda式もおける
>>> df.apply(np.sqrt)
     A    B
0  2.0  3.0
1  2.0  3.0
2  2.0  3.0

axis:(0 か 'index', 1 か 'columns')

関数を適用する方向

  • デフォルト値:0
  • 0 か 'index':それぞれの列毎に適用。行方向。
  • 1 か 'columns':それぞれの行毎に適用。列方向。
>>> df.apply(np.sum, axis=0)
A    12
B    27
dtype: int64
>>> df.apply(np.sum, axis=1)
0    13
1    13
2    13
dtype: int64

raw:bool

対象がシリーズ型かndarray型か

  • デフォルト値:False
  • False:各行か各列をシリーズ型で関数に渡す
  • True:Numpyのndarray形式のオブジェクトを受け取る。Numpyの関数を使用する際高速になる

result_type:(‘expand’, ‘reduce’, ‘broadcast’, None)

axis = 1の時のみ発動

  • デフォルト値:None
  • 'expand':リストをシリーズ、データフレームに変更
  • 'reduce':シリーズをリストに変更
  • 'broadcast':元のインデックスや列を保持したデータフレーム型を返す
  • None:戻り値は関数に依存。リスト型はシリーズ型で返されるが、関数がシリーズ型を返す場合列として返す
>>> df.apply(lambda x: [1, 2], axis=1)
0    [1, 2]
1    [1, 2]
2    [1, 2]
dtype: object
>>> df.apply(lambda x: [1, 2], axis=1, result_type='expand')
   0  1
0  1  2
1  1  2
2  1  2
>>> df.apply(lambda x: pd.Series([1, 2], index=['foo', 'bar']), axis=1)
   foo  bar
0    1    2
1    1    2
2    1    2
>>> df.apply(lambda x: [1, 2], axis=1, result_type='broadcast')
   A  B
0  1  2
1  1  2
2  1  2

args:tuple

関数に渡す位置引数

by_row:False か 'compat'

関数がリスト型や辞書型の時にのみ発動。
関数を各要素に対して適用するか、全体に一度に適用するかを決定

  • デフォルト値:'compat'
  • 'compat':各要素に対して適用。一度関数をPandasのメソッドに変換を試みて、それが出来ない場合にapplyを再度呼び出し、それでもダメならFalseの処理
  • False:全体に一度に適用

**kwargs

関数に渡す追加のキーワード引数

戻り値

シリーズかデータフレーム

ドキュメント

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0