データフレーム内の多くの列を1つの列と比較したいと思います。これを行う非ループの方法はありますか?
df = pd.DataFrame({'a':[1,2,3], 'b':[4,5,6], 'c':[7,8,9], 'd':[5,7,2]})
# works but requires one line per column
df['a'] = df['a'] < df['d']
df['b'] = df['b'] < df['d']
df['c'] = df['c'] < df['d']
# df[['a','b','c']] = df[['a','b','c']] < df[['d']]
メソッドDataFrame.lt
とともに使用し、selectからaxis=0
1つ[]
を削除しd
てselect by Series
:
df[['a','b','c']] = df[['a','b','c']].lt(df['d'], axis=0)
print (df)
a b c d
0 True True False 5
1 True True False 7
2 False False False 2
または、列から作成されたnumpy配列で比較できますd
:
df[['a','b','c']] = df[['a','b','c']] < df['d'].to_numpy()
print (df)
a b c d
0 True True False 5
1 True True False 7
2 True True False 2
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加