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

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

使用 Pandas 根據多個條件選擇數據

使用 Pandas 根據多個條件選擇數據

忽然笑 2021-10-12 16:36:32
我是使用 Pandas 的新手。我想從多列值匹配的數據框中選擇行。沿著以下路線:如果 A 列等于 AB 列且 B 列等于 BC 列那么我想要這些值。我實際上并沒有使用 if 語句,我讀到迭代不適用于熊貓。我試圖找到一個解決方案,我不確定這是我的語法還是它對列的不同數據類型不滿意?我的代碼有點長,所以我只提供我嘗試選擇的行,但如果有幫助,我可以發布整個代碼。dfequal=dfMerged.loc[(dfMerged['MetCode']==dfMerged['GCD_METCODE']) & (dfMerged[dfMerged['Zone Code']==dfMerged['GCD_Senior_ZONE']]) & (dfMerged[dfMerged['Municipality Code']==dfMerged['GCD_CSDUID']])]編輯*預期的輸出將是一個數據幀,其中只有語句為真的行才會存在。這是錯誤:ValueError: 操作數無法與形狀一起廣播 (84778,) (4462,)這是我從中提取的數據表    FileID,MetCode,Municipality Code,Zone Code,GCD_Senior_ZONE,GCD_METCODE,GCD_CSDUIDA100101,7175,1005018,303006,303006,7175,1005018A100102,7175,1005018,303006,303006,7175,1005018A100103,7175,1005018,303006,303006,7175,1005018A100104,7280,1006009,202003,202003,7280,1006009A100105,7300,1006017,202003,202003,7300,1006017A100108,7300,1006017,202003,202003,7300,1006017A100109,7300,1006017,202003,202003,7300,1006017A100110,1640,1001485,101001,101001,1640,1001485A100111,1640,1001517,101001,101001,1640,1001517A100114,9000,1008011,202003,202003,0,1008011A100115,9000,1001370,101002,101002,0,1001370A100119,9000,1003034,202003,202003,0,1003034
查看完整描述

1 回答

?
九州編程

TA貢獻1785條經驗 獲得超4個贊

您只需要在括號內添加條件,.loc而不是在 df 過濾器內重復 DF 過濾器:


首先,創建一個粗略的數據樣本,因為除了圖像之外你沒有提供:


# creating the values, first one will be ID, then next 4 will be the values to compare

check_values = [

    [1, 5, 10, 20, 30],

    [2, 5, 11, 32, 11],

    [3, 10, 10, 20, 20],

    [4, 9, 9, 11, 11],

    [5, 11, 23, 41, 11]

]


# creating columns names

check_cols = ['id', 'A', 'B', 'C', 'D']


# making the DataFrame

dfcheck = pd.DataFrame(check_values, columns=check_cols)


# Setting the id column, just because

dfcheck.set_index('id', inplace=True)

解決方案,您需要將每個條件嵌套在括號內:


dfcheck.loc[(dfcheck['A'] == dfcheck['B']) & (dfcheck['C'] == dfcheck['D'])]

編輯:你錯過了什么/做錯了什么?:


看看你的過濾器,你在括號內添加了不必要的 dfMerged,你的代碼被分成幾行(刪除“** CODE **”中的所有內容):


dfequal=

dfMerged.loc[(dfMerged['MetCode']==dfMerged['GCD_METCODE']) 

& (**dfMerged[**dfMerged['Zone Code']==dfMerged['GCD_Senior_ZONE']**]**) 

& (**dfMerged[**dfMerged['Municipality Code']==dfMerged['GCD_CSDUID']**]**)]

所以你看,你在一個不需要的搜索中搜索?它應該是:


dfequal=

dfMerged.loc[(dfMerged['MetCode']==dfMerged['GCD_METCODE']) 

& (dfMerged['Zone Code']==dfMerged['GCD_Senior_ZONE']) 

& (dfMerged['Municipality Code']==dfMerged['GCD_CSDUID'])]


查看完整回答
反對 回復 2021-10-12
  • 1 回答
  • 0 關注
  • 464 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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