2014-03-19 148 views
1

薩姆2個大熊貓數據幀的列與行條件

 
    A B C 
0 0 -2 1 
1 1 -1 2 
2 2 0 3 
3 3 1 0 
4 4 2 5 

我希望得到一個新的列,使得其拾取元件從乙如果B爲正(> 0),否則拾取選自C

 
    A B C D 
0 0 -2 1 1 
1 1 -1 2 2 
2 2 0 3 3 
3 3 1 0 1 
4 4 2 5 5 
元件
+0

你能澄清你到底想要什麼嗎?它是否必須總和B和C(例如,第4行 - > 2 + 5不是5),還是隻有兩列的最大值? – joris

+0

我想得到一個新的列,如果B是正值(> 0),它會從B中選擇元素,否則從C中選取元素 – Rahuketu86

+0

也應該做些什麼來獲得像D(x)= B(x)+ C x)如果B(x)> 0否則C(x) – Rahuketu86

回答

2

使用布爾掩碼:

In [14]: df[df[['B', 'C']] > 0].max(1) 
Out[14]: 
0 1 
1 2 
2 3 
3 1 
4 5 
dtype: float64 

In [15]: df['D'] = df[df[['B', 'C']] > 0].max(1) 
+0

謝謝!如果B(x)> 0或者C(x)有效,D(x)= B(x)+ C(x) – Rahuketu86