我有一個名為df的數據框,看起來像-pageno entity code rawentity 17727425 SAUDI CBCNTRY saudi 17727425 GARRA DRWRNAME garra17727425 PO BOX RBCNTRY po box 17727425 NEW ZEALAND DRWRCNTRY new zealand我還有一個包含國家名稱的國家列表,它是'list'類型的。我試圖僅保留那些代碼為-CBCNTRY或RBCNTRY或DRWRCNTRY的值,并且該實體應位于countrylist中。我寫的代碼是- for row in df.itertuples(): if(row.code in ['DRWRCNTRY', 'RBCNTRY', 'CBCNTRY']): if(row.entity not in countrylist): df.drop((row.index), inplace=True)但我收到以下錯誤-Error is: labels [<built-in method index of Pandas object at 0x0000020A1BCE4EB8>] not contained in axis我只想知道為什么我的方法是錯誤的,除了這種方法之外,還有什么我可以做的更好的事情了。我已經搜索了此錯誤,但無法獲得滿意的答案。
3 回答

撒科打諢
TA貢獻1934條經驗 獲得超2個贊
正如Gerardo所建議的,使用pd.isin布爾運算符來使用和組合表達式:
countrylist = ['SAUDI']
codelist = ['DRWRCNTRY', 'RBCNTRY', 'CBCNTRY']
df = df[(df['code'].isin(codelist)) & (df['entity'].isin(countrylist))]
結果是
pageno entity code rawentity
0 17727425 SAUDI CBCNTRY saudi

慕哥6287543
TA貢獻1831條經驗 獲得超10個贊
在處理系列時,可以使用pd.isin
。例如,您可以通過執行以下操作來實現:
df = df[df['code'].isin(['DRWRCNTRY', 'RBCNTRY', 'CBCNTRY'])]
添加回答
舉報
0/150
提交
取消