2017-08-28 113 views
1

所以,這裏是我的數據框如何更新/在列表中的基於價值的大熊貓創建列

import pandas as pd 
cols = ['Name','Country','Income'] 
vals = [['Steve','USA',40000],['Matt','UK',40000],['John','USA',40000],['Martin','France',40000],] 
x = pd.DataFrame(vals,columns=cols) 

我有另外一個列表:

europe = ['UK','France'] 

我想創建一個新列「大陸如果x.Country是在歐洲

回答

3

,也可以使用isin直接

x['New Column']='Not Europe' 
x.loc[x.Country.isin(europe),'New Column']='Europe' 

Out[612]: 
    Name Country Income New Column 
0 Steve  USA 40000 Not Europe 
1 Matt  UK 40000  Europe 
2 John  USA 40000 Not Europe 
3 Martin France 40000  Europe 
5

您需要numpy.where與條件與isin

x['Continent'] = np.where(x['Country'].isin(europe), 'Europe', 'Not Europe') 
print (x) 
    Name Country Income Continent 
0 Steve  USA 40000 Not Europe 
1 Matt  UK 40000  Europe 
2 John  USA 40000 Not Europe 
3 Martin France 40000  Europe 
+0

很好的解決方案和往常一樣,allthemore,使用'相較於'x.loc [x.Country.isin(歐洲)索引timeit'似乎很有效, 'Continent'] ='Europe'' – ysearka

+0

我嘗試測試它,給我一秒鐘。 – jezrael

+0

是的,它在大的df中快了2倍。我得到'100循環,最好是3:每循環9.62毫秒'和'10循環,最好每循環3:23.4毫秒。我用'100000行'測試它 – jezrael

相關問題