2015-03-24 38 views
0

我試圖打破循環的心態:試圖總結我的周圍大​​熊貓數據框頭(無循環)

df = pd.DataFrame(data = np.arange(1,11), columns=['x']) 

這給我的10個項目,1列至10我會喜歡創建一個新列y,使得如果x小於5,y爲0,否則等於x。這是我做的:

def f(x): 
    if x < 5: 
     return 0 
    else: 
     return x 

col = df['x'] 
df['y'] = col.apply(f) 

有沒有更好的方法來做到這一點?

回答

2

使用where有條件地分配一個值,其中真和返回不同的值,如果假:

In [57]: 

df['y'] = df['x'].where(df['x']>5, 0) 
df 
Out[57]: 
    x y 
0 1 0 
1 2 0 
2 3 0 
3 4 0 
4 5 0 
5 6 6 
6 7 7 
7 8 8 
8 9 9 
9 10 10 
+0

只是返回使用'np.where':'np.where(DF [ 'X']> 5 ,「更大」,「更小」) – EdChum 2015-03-24 22:12:44