如何根据列表中的值更新/创建pandas中的列

Pan*_*ngh 1 python pandas

所以,这是我的数据帧

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)
Run Code Online (Sandbox Code Playgroud)

我有另一个清单:

europe = ['UK','France']
Run Code Online (Sandbox Code Playgroud)

如果x.Country在欧洲,我想创建一个新列'Continent'

jez*_*ael 6

你需要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
Run Code Online (Sandbox Code Playgroud)


WeN*_*Ben 5

或者你可以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
Run Code Online (Sandbox Code Playgroud)