Python 如何根据列表中的值更新/创建熊猫中的列
这是我的数据框Python 如何根据列表中的值更新/创建熊猫中的列,python,pandas,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) 我还有一个清单: europe = ['UK','France'] 如果x.Country位于欧洲,
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位于欧洲,我想创建一个新的专栏“Continental”,您需要具备以下条件:
或者您可以直接使用
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
很好的解决方案和往常一样,使用
timeit
比使用x.loc[x.Country.isin(欧洲),'Continent']='european'索引似乎效率更高,我试着测试一下,给我一秒钟。是的,在大型df中速度快2倍。我得到了100个循环,每个循环的最佳时间为3:9.62 ms
,10个循环,每个循环的最佳时间为3:23.4 ms
。我在100000行中测试它
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