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

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

根據自定義條件過濾 csv 中的行

根據自定義條件過濾 csv 中的行

隔江千里 2023-04-25 17:39:58
假設我有一個如下所示的 csv+-----+-----------+---------+| ID  | state     | city    |+-----+-----------+---------+| 101 | READY     |         || 101 | DELIVERED | NEWYORK || 101 | DELIVERED | LONDON  |   | 102 | READY     |         || 102 | DELIVERED | LONDON  || 103 | READY     |         || 103 | DELIVERED | NEWYORK || 104 | READY     |         || 104 | DELIVERED | TOKYO   || 104 | DELIVERED | PARIS   || 105 | DELIVERED | NEWYORK |+-----+-----------+---------+現在我想要帶有 State 的 ID,READY它有DELIVEREDas NEWYORK。相同的 ID 會在不同的州和城市出現多次??偸荝EADYcity為空cityDELIVERED總是有一些值。city所以首先我想檢查DELIVERED列的值state。如果是 NEWYORK,則取該 ID 的 READY 行。如果沒有對應READY的行,那么我們可以忽略(本例中的 ID 105)預期產出+-----+-----------+---------+| ID  | state     | city    |+-----+-----------+---------+| 101 | READY     |         || 103 | READY     |         |+-----+-----------+---------+我試過在熊貓中使用自我加入。但是我不知道如何繼續,因為我是 python 的新手。目前我正在用 SQL 做這件事。import pandas as pdmydata = pd.read_csv('C:/Mypython/Newyork',encoding = "ISO-8859-1")NY = pd.merge(mydata,mydata,left_on='ID',right_on='ID',how='inner')
查看完整描述

2 回答

?
拉風的咖菲貓

TA貢獻1995條經驗 獲得超2個贊

讓我們嘗試用布爾索引來groupby().transform()識別那些:NEWYORK


has_NY = df['city'].eq('NEWYORK').groupby(df['ID']).transform('any')


mask = df['state'].eq('READY') & has_NY


df[mask]

輸出:


    ID  state  city

0  101  READY  None

5  103  READY  None


查看完整回答
反對 回復 2023-04-25
?
慕工程0101907

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

使用NEWYORK條件獲取 ID 列表,然后使用該列表進行過濾。


new_york_ids = df.loc[df['city']=='NEWYORK', 'ID']

df[(df['state']=='READY') & (df['ID'].isin(new_york_ids))]


    ID  state  city

0  101  READY  None

5  103  READY  None


查看完整回答
反對 回復 2023-04-25
  • 2 回答
  • 0 關注
  • 170 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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