【環境】Windows10 64bit, Minicondaで仮想環境でjupyter notebookを利用
【事象】業務でPanadsのデータフレームでデータ処理を行っておりますが、ある列について特定の条件を満たす行についてだけ、その行の別の列の値を書き換えたいとうい状況になり困っています。簡単な例ですと、下記の様な状況です:
Python3
1import pandas as pd 2df = pd.DataFrame({ 3 'A': [1,2,3,-1,2,-2,5], 4 'B': [3,3,6,-5,2,2,-1] 5 }) 6display(df.head(10))
ここで例えば「列Aの値が負の時は、その行の列Bの値を0にする」というようなことができれば良いのですが。。。
python3
1df['B'].loc[df.query( 'A< 0'),:]=0 2display(df.head(10))
としますとエラーになりました。ValueError: Buffer has wrong number of dimensions (expected 1, got 2)
また
python3
1df['B'].where(df['A'] < 0, 0,inplace=True) 2display(df.head(10))
としますとAの列も0に書き換わってしまい、、、またなぜか、A列が正の箇所が0に変わってしまっているようです。。
対策がございましたらご教示下さい。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/11/10 04:57