Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何根据列表中的值更新/创建熊猫中的列_Python_Pandas - Fatal编程技术网

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