天天看點

# yyds幹貨盤點 # 盤點使用Pandas解決問題:對比兩列資料取最大值的5個方法

大家好,我是Python進階者。

一、前言

前幾天在Python星耀交流群有個叫【iLost】的粉絲問了一個關于使用pandas解決兩列資料對比的問題,這裡拿出來給大家分享下,一起學習。

# yyds幹貨盤點 # 盤點使用Pandas解決問題:對比兩列資料取最大值的5個方法

大概意思是說在DF中有2列資料,想每行取兩列資料中的最大值,形成一個新列,該怎麼寫?最開始【iLost】自己使用了循環的方法寫出了代碼,當然是可行的,但是寫的就比較難受了。

# yyds幹貨盤點 # 盤點使用Pandas解決問題:對比兩列資料取最大值的5個方法

二、解決過程

這裡給出5個方法,感謝大佬們的解答,一起來看看吧!

方法一:【月神】解答

其實這個題目的邏輯和思路也相對簡單,但是對于Pandas不熟悉的小夥伴,接受起來就有點難了。

df['max1'] = df[['cell1', 'cell2']].max(axis=1)
df      
# yyds幹貨盤點 # 盤點使用Pandas解決問題:對比兩列資料取最大值的5個方法
方法二:【廣深-營運-n】解答

這個方法是才哥群裡【廣深-營運-n】大佬給的方法。

# yyds幹貨盤點 # 盤點使用Pandas解決問題:對比兩列資料取最大值的5個方法

代碼如下,親測可行。

df['max2'] = df.loc[:,['cell1','cell2']].max(axis=1)
df      
# yyds幹貨盤點 # 盤點使用Pandas解決問題:對比兩列資料取最大值的5個方法
方法三:【月神】解答

apply方法是最開始想到的方法,但是不知道怎麼寫,還好有【月神】,這裡使用apply方法來解決,代碼如下

df['max3'] = df[['cell1', 'cell2']].apply(max, axis=1)
df      
# yyds幹貨盤點 # 盤點使用Pandas解決問題:對比兩列資料取最大值的5個方法
方法四:【常州-銷售-MT】解答

這個方法也是才哥群裡的一個大佬給的思路。

# yyds幹貨盤點 # 盤點使用Pandas解決問題:對比兩列資料取最大值的5個方法

親測可行,代碼如下:

df = df.assign(new=df[['cell1', 'cell2']].max(1))      
# yyds幹貨盤點 # 盤點使用Pandas解決問題:對比兩列資料取最大值的5個方法

這裡的用法需要注意下,不然容易翻車:

# yyds幹貨盤點 # 盤點使用Pandas解決問題:對比兩列資料取最大值的5個方法

細節拉滿:

# yyds幹貨盤點 # 盤點使用Pandas解決問題:對比兩列資料取最大值的5個方法
方法五:【上海-數分-長城】解答

這個方法也是才哥群裡的一個大佬給的思路。

# yyds幹貨盤點 # 盤點使用Pandas解決問題:對比兩列資料取最大值的5個方法

使用numpy結合pandas,代碼如下:

df['max4'] = np.where(df['cell1'] > df['cell2'],df['cell1'], df['cell2'])
df      
# yyds幹貨盤點 # 盤點使用Pandas解決問題:對比兩列資料取最大值的5個方法

真是太秀了。

三、總結

大家好,我是Python進階者。這篇文章基于粉絲提問,針對df中,想在每行取兩列資料中的最大值,作為新的一列問題,給出了具體說明和示範,一共5個方法,順利地幫助粉絲解決了問題,也幫助大家玩轉Pandas,學習Python相關知識。