Pandasなどで作成しているデータフレームの中の2つの列の値を比較して大きい方/小さい方の数字を新しい列に抽出する方法。
コード
# サンプルデータセットの作成
import pandas as pd
import numpy as np
DF = pd.DataFrame({'A': [1,3,5,7,9],'B':[8,6,4,2,1]})
# A B
# 0 1 8
# 1 3 6
# 2 5 4
# 3 7 2
# 4 9 1
array_A = np.array(DF['A'])
array_B = np.array(DF['B'])
#値の大きい方をカラムCに格納する
maximum = np.maximum(array_A ,array_B)
DF['C'] = maximum
# A B C
# 0 1 8 8
# 1 3 6 6
# 2 5 4 5
# 3 7 2 7
# 4 9 1 9
‘A’: [1,3,5,7,9]、’B’:[8,6,4,2,1]にて各行のうち数字の大きい方’C’:[8,6,5,7,9]を取得することができました。
値の小さい方を抽出する
また、maximum → minimumに変更することで、値の小さい方を抽出するということもできます
#値の小さい方をカラムCに格納する
minimum = np.minimum(array_A ,array_B)
DF['C'] = minimum
# A B C
# 0 1 8 1
# 1 3 6 3
# 2 5 4 4
# 3 7 2 2
# 4 9 1 1
数字型だけでなく日付型などにも対応しているので、2つの日付列のうち新しい方(古い方)などのデータ抽出も可能となります。
解説
値の比較はnumpyを利用すると便利。Pandasで加工しているデータフレームをnp.array()でnumpyの配列に変換、その後np.maximumで比較