亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Pandas:如何將多個單元格與列表/元組進行比較

Pandas:如何將多個單元格與列表/元組進行比較

狐的傳說 2021-08-05 16:41:50
我需要將數據框中的某些列作為一個整體進行比較,例如:df = pd.DataFrame({'A':[1,1,3],'B':[4,5,6]})#Select condition: If df['A'] == 1 and df['B'] == 4, then pick up this row. 對于這個簡單的例子,我可以使用以下方法:df.loc[(df['A']==1)&(df['B']==4),'A':'B']然而,實際上我的數據框有幾十列應該作為整體進行比較。如果我選擇列出所有解決方案,上述解決方案將非常非?;靵y。所以我認為如果把它們作為一個整體來與一個列表進行比較可能會解決這個問題:#something just like this:df.loc[df.loc[:,'A':'B']==[1,4],'A':'B')]沒有工作。所以我想出了一個想法,首先將所有需要的列組合成一個新列作為列表值,然后將這個新列與列表進行比較。后者已在Pandas 中解決:比較 Series 中的列表對象雖然一般我已經解決了我的情況,但我仍然想知道是否有更簡單的方法來解決這個問題?謝謝。
查看完整描述

2 回答

?
智慧大石

TA貢獻1946條經驗 獲得超3個贊

您可以通過數據的 NumPy 數組表示來使用布爾掩碼:


df = pd.DataFrame({'A':[1,1,3],'B':[4,5,6]})


res = df[(df.loc[:, 'A':'B'].values == [1, 4]).all(1)]


print(res)


   A  B

0  1  4

在這種情況下,永遠不要將您的列組合成一系列列表。這是低效的,因為您將失去所有矢量化優勢,并且此后的任何處理都將涉及 Python 級循環。


查看完整回答
反對 回復 2021-08-05
?
慕后森

TA貢獻1802條經驗 獲得超5個贊

或[[]]用于獲取多列:


df[(df[['A','B']].values==[1,4]).all(1)]

演示:


>>> df = pd.DataFrame({'A':[1,1,3],'B':[4,5,6]})

>>> df[(df[['A','B']].values==[1,4]).all(1)]

   A  B

0  1  4

>>> 


查看完整回答
反對 回復 2021-08-05
  • 2 回答
  • 0 關注
  • 245 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號