大家好,我是Python進階者。
一、前言
前幾天在Python星耀交流群有個叫【iLost】的粉絲問了一個關于使用pandas解決兩列資料對比的問題,這裡拿出來給大家分享下,一起學習。
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiI9s2RkBnVHFmb1clWvB3MaVnRtp1XlBXe0xCMy81dvRWYoNHLwEzX5xCMx8FesU2cfdGLwMzX0xiRGZkRGZ0Xy9GbvNGLpZTY1EmMZVDUSFTU4VFRR9Fd4VGdsQTMfVmepNHLrJXYtJXZ0F2dvwVZnFWbp1zczV2YvJHctM3cv1Ce-cmbw5SNwUDN5QWM0IjZiNDZ2UjMyYzXzAjNyATM3AzLcNDMyIDMy8CXn9Gbi9CXzV2Zh1WavwVbvNmLvR3YxUjLyM3Lc9CX6MHc0RHaiojIsJye.png)
大概意思是說在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相關知識。