python 初心者です。
下記のようなデータを読み込み、
行ごとに A列とB列の絶対値を比較し、大きい方を残し、小さい方をゼロにすることを考えております
<入力>
A B
5 -6
7 -2
9 -11
10 -5
<出力>
A B
0 -6
7 0
0 -11
10 0
np.where で置き換えを考えました。
また、np.where だと typeがobjectになるので数値として扱いたいためastypeで置き換えをしてます
df['A']=np.where(df['A']>((-1)*df['B']),df['A'],'0') df['A']=df['A'].astype(np.float) df['B']=np.where(df['B']<((-1)*df['A']),df['B'],'0') df['B']=df['B'].astype(np.float)
上記でプログラムは動くのですが、警告メッセージが出てきます。
<警告> 0224.py:47: SettingWithCopyWarning: A value is trying to be set on a copy of a slice from a DataFrame. Try using .loc[row_indexer,col_indexer] = value instead
改良を考えているのですが、loc をどのように使えばよいかわからず、アドバイスをいただけると幸いです。
よろしくお願いいたします。
A==-Bの時には、kumatakunさんが(たぶん)期待する答えにはならないですね。
たとえば、
A B
5 -5
なら
A B
0 -5
となります。
回答4件
あなたの回答
tips
プレビュー