見出し画像

[Python] pandas 条件抽出した行の特定の列に、一括で値を設定する

はじめに

pandasのDataFrameで、条件抽出した行の特定の列に対して、一括で値を設定する実装についてご紹介します。

使用するライブラリ

pandas

データ分析をサポートするライブラリです。

動作環境

  • windows11

  • Jupyter Notebook 6.4.8

  • Python 3.8.12

実装

処理は、Unitという列を追加し、Categoryの列に「果物」が設定されている場合、Unitの列に「個」を代入します。

はじめに、DataFrameにデータを設定します。

import pandas as pd

products =  [['りんご','果物','1'],['みかん','果物','15'],['牛乳','飲み物','3']]
df = pd.DataFrame(products,index=range(3),columns=['ProductName','Category','Quantity'])

Unitの列を追加し、初期値として空文字を設定します。

df['Unit'] = ''

Categoryの列に「果物」が設定されている場合、Unitの列に「個」を代入します。

df.loc[df['Category'] == '果物','Unit'] = '個'

DataFrame型で、任意の位置のデータを参照、代入する場合、下記の4つのメソッドを使用することが可能です。

  • at

  • iat

  • loc

  • iloc

位置の指定方法、参照できる要素(単数か、複数か)によって、使用するメソッドが異なります。
今回のケースのように、指定条件で複数の要素に対して代入を行う場合には、loc, ilocメソッドのいずれかを使用します。
両者の違いは、locメソッドでは、行、列の名前で、ilocメソッドは、行、列の番号で、位置を指定するとなります。

今回は、locメソッドを使用して、条件にヒットした行のデータを一括で変更しています。

同じように、Categoryの列に「飲み物」が設定されている場合、Unitの列に「本」を代入します。

df.loc[df['Category'] == '飲み物','Unit'] = '本'

下記のように、DataFrameに値が設定されるのが確認できました!

まとめ

今回は、pandasで、条件抽出した行の特定の列に対して、一括で値を設定する実装についてご紹介しました。

参考サイト

この記事が気に入ったらサポートをしてみませんか?