一部の列のみを取り出して処理Seriesのイテレーションアイテムごとに処理するforループインデックスラベルごとに処理するforループ値の更新forループを使わない方法まとめ参考PandasのDataFrame内の値を使ってforループを回したい時、通常行ごとの処理ならiterrows関数を、列ごとの処理ならiteritems関数をジェネレーターとして使うことが多いです。本記事では、DataFrameで行ごとに処理する方法DataFrameで列ごとに処理する方法Seriesで値ごとに処理する方法について解説します。DataFrameのイテレーション行ごとのforループ行ごとにDataFrameを処理したい場合はiterrows関数を使います。object----------------行ごとには番号か列ラベルの値でアクセスできます。e--------------列ごとの値にアクセス列ごとにアクセスしたい場合はiteritemsを使います。値の更新する時はloc属性で元のデータを参照する必要があります。列ごとにアクセスするとそれはSeriesを返すのでforループを容易に回せるようになります。zipを使って複数の値にアクセスしてみます。eSeriesのイテレーションアイテムごとに処理するforループSeriesの場合は特別な関数を使うことなくforループを回すことができます。1---2---3---4---5---インデックスラベルごとに処理するforループインデックスラベルにアクセスしたい時はsr.indexとします。値の更新する時はインデックスの値で元のSeriesのデータにアクセスする形になります。イテレータで返される値は元のデータのコピーとなるため、その値を変更しても元のデータが変更されるわけではありません。int64forループを使わない方法Pandasはforループを使って処理せずにやりたいことができてしまうことが多いです。これは、NumPyをベースにしていることに依る部分が大きいと考えられます。そのため、forループを使わずに処理を実現できるなら、多くの場合はそちらの方がパフォーマンスがよくなります。2の1行で足りてしまいます。各々の値ごとに処理をする関数としてDataFrameに対してはapplymap関数があり、Seriesに対してはmap関数を使います。applymap関数を使って条件に応じた処理をしていきます。applymapは全ての個々の要素について値を処理してくれる関数です。1複数の列に跨った処理で一括で処理できる場合はこのように処理できます。'A'列の値に'C'列の値を足し合わせてみます。8このように、簡単な処理であればforループを使わずに実現できるので最初はforループを使わずに処理を実現できないか考えてみることをオススメします。applymap関数、map関数の詳しい使い方は以下の記事で解説しています。/features/pandas-apply.htmlまとめ今回はDataFrame、Seriesそれぞれの値についてforループの回し方について扱いました。複雑な処理でない限り、DataFrame,Series共にforループを使わなくても基本的には実現できますしそちらの方が速いのでforループを使わずに住むのならそれに越したことはないです。forループの方が直感的でわかりやすいため、最終手段として残しておくと何かと便利ですので使い方を覚えておくと良いと思います。note.nkmk.meTweetDeepAgeではAIに関する厳選した内容を記事にしてお届けします。