[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で、条件抽出した行の特定の列に対して、一括で値を設定する実装についてご紹介しました。
参考サイト
この記事が気に入ったらサポートをしてみませんか?