Python 如何使用apply和lambda在数据帧中应用多个if/else条件?
我试图根据一组条件更新列中的某些行。例如,在下面的示例中,我试图根据一些if语句将“Country”列名更新为较短的版本,下面是我使用的内容。有更好的方法吗Python 如何使用apply和lambda在数据帧中应用多个if/else条件?,python,pandas,dataframe,if-statement,apply,Python,Pandas,Dataframe,If Statement,Apply,我试图根据一组条件更新列中的某些行。例如,在下面的示例中,我试图根据一些if语句将“Country”列名更新为较短的版本,下面是我使用的内容。有更好的方法吗 energy['Country']=energy['Country'].适用(lambda x:'South Korea'如果x=='Republic Korea' else('美国'如果x=='美利坚合众国20' else('United Kingdom'如果x=='大不列颠及北爱尔兰联合王国' 否则,‘香港’如果X=’,中国,香港特别行
energy['Country']=energy['Country'].适用(lambda x:'South Korea'如果x=='Republic Korea'
else('美国'如果x=='美利坚合众国20'
else('United Kingdom'如果x=='大不列颠及北爱尔兰联合王国'
否则,‘香港’如果X=’,中国,香港特别行政区
其他(十))
使用
使用
尽可能避免
DataFrame.apply
这是一个隐藏循环。考虑向量化处理,例如将向量(即,麻木数组或大熊猫系列)传递到一个方法中,而不是一次一个标量元素:
energy['Country'] = np.select([energy['Country'] == 'South Korea',
energy['Country'] == 'United States',
energy['Country'] == 'United Kingdom',
energy['Country'] == 'Hong Kong'],
['Republic of Korea',
'United States of America',
'United Kingdom of Great Britain and Northern Ireland'
'China, Hong Kong Special Administrative Region'])
尽可能避免
DataFrame.apply
这是一个隐藏循环。考虑向量化处理,例如将向量(即,麻木数组或大熊猫系列)传递到一个方法中,而不是一次一个标量元素:
energy['Country'] = np.select([energy['Country'] == 'South Korea',
energy['Country'] == 'United States',
energy['Country'] == 'United Kingdom',
energy['Country'] == 'Hong Kong'],
['Republic of Korea',
'United States of America',
'United Kingdom of Great Britain and Northern Ireland'
'China, Hong Kong Special Administrative Region'])
使用内置函数几乎总是比迭代和使用apply更好。与其使用apply,还不如使用一个要替换的项字典,使用内置的,而不是迭代和使用apply。与其应用,不如使用要替换的项目字典,谢谢@Yuna.,这是帮助谢谢@Yuna.,这是帮助谢谢所有,非常有用的建议谢谢所有,非常有用的建议