盘点使用Pandas解决问题:对比两列数据取最大值的5个方法

前言

前几天在 Python 星耀交流群有个叫【iLost】的粉丝问了一个关于使用 pandas 解决两列数据对比的问题,这里拿出来给大家分享下,一起学习。

图片

大概意思是说在 DF 中有 2 列数据,想每行取两列数据中的最大值,形成一个新列,该怎么写?最开始【iLost】自己使用了循环的方法写出了代码,当然是可行的,但是写的就比较难受了。

图片

解决过程

这里给出 5 个方法,感谢大佬们的解答,一起来看看吧!


方法一:【月神】解答


其实这个题目的逻辑和思路也相对简单,但是对于 Pandas 不熟悉的小伙伴,接受起来就有点难了。

df['max1']=df[['cell1','cell2']].max(axis=1)
df
图片

方法二:【广深-运营-n】解答


这个方法是才哥群里【广深-运营-n】大佬给的方法。

图片

代码如下,亲测可行。

df['max2']=df.loc[:,['cell1','cell2']].max(axis=1)
df
图片

方法三:【月神】解答


apply 方法是最开始想到的方法,但是不知道怎么写,还好有【月神】,这里使用 apply 方法来解决,代码如下

df['max3']=df[['cell1','cell2']].apply(max,axis=1)
df
图片

方法四:【常州-销售-MT】解答


这个方法也是才哥群里的一个大佬给的思路。

图片

亲测可行,代码如下:

df=df.assign(new=df[['cell1','cell2']].max(1))
图片

这里的用法需要注意下,不然容易翻车:


细节拉满:

图片

图片

方法五:【上海-数分-长城】解答


这个方法也是才哥群里的一个大佬给的思路。

图片

使用 numpy 结合 pandas,代码如下:

df['max4']=np.where(df['cell1']>df['cell2'],df['cell1'],df['cell2'])
df
图片

真是太秀了。

总结

大家好,我是 Python 进阶者。这篇文章基于粉丝提问,针对 df 中,想在每行取两列数据中的最大值,作为新的一列问题,给出了具体说明和演示,一共 5 个方法,顺利地帮助粉丝解决了问题,也帮助大家玩转 Pandas,学习 Python 相关知识。


最后感谢粉丝【iLost】提问,感谢【月神】、【dcpeng】、【北京-算法-浩浩】、【上海-数分-长城】、【广深-运营-n】、【常州-销售-MT】大佬们给出的示例和代码支持,感谢【冯诚】、【凌云剑圣】、【PI】、【艾希·觉罗】、【猎影】等人参与学习交流。

图片

小伙伴们,快快用实践一下吧!如果在学习过程中,有遇到任何问题,欢迎加我好友,我拉你进 Python 学习交流群共同探讨学习。

文章为作者独立观点,不代表BOSS直聘立场。未经账号授权,禁止随意转载。