次のような DataFrame があります。
x1 x2
0 4 1
1 0 2
2 5 1
3 0 3
4 4 2
x1
ここで、列との平均をとる別の列を作成したい、または が の場合にx2
返す:0
x1
0
x1 x2 ave
0 4 1 2.5
1 0 2 0
2 5 1 3
3 0 3 0
4 4 2 3
これも
data['ave'] = (data['x1'] + data['x2'])/2 if data['x1'] > 0 else 0
これも
data['ave'] = (data['x1'] != 0)*(data['x1'] + data['x2'])/2
明らかな理由で機能します(これらの操作ではシリーズを使用できません)。
これはループを使用して簡単に達成できることは知っていますが、それを行う簡単な方法はありますか?
適切な python データは以下のとおりです。
data = pd.DataFrame({'x1': (4,0,5,0,4), 'x2': (1,2,1,3,2)})