2017-08-28 109 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

相关问题