簡體   English   中英

在 Python 中使用具有特定條件的多列映射值

[英]Map values using multiple columns with a specific condition in Python

我有一個數據集,我想根據特定條件映射值。 我想添加一個新列,然后將一個標簽映射到一個 ID,如果它滿足以下條件:

**If ID == AA AND Date >= to Q121:  Status = 'closed' AND values within the Used column will be null.**

數據

ID  Date    Location    Used    
AA  Q121    NY          20  
AA  Q221    NY          50  
AA  Q321    NY          10  
BB  Q121    CA          1   
BB  Q221    CA          0   
BB  Q321    CA          500 
BB  Q421    CA          700 
CC  Q121    AZ          50  

期望的

ID  Date    Location    Used    Status
AA  Q121    NY                  closed
AA  Q221    NY                  closed
AA  Q321    NY                  closed
BB  Q121    CA          1   
BB  Q221    CA          0   
BB  Q321    CA          500 
BB  Q421    CA          700 
CC  Q121    AZ          50

正在做

df['Status']=df['ID'].map({'AA':'closed' ,  })

是否可以使用兩列進行映射,或者循環更適合這個? 任何建議表示贊賞。

您可以為此使用np.where

df['Used'] = np.where(((df.ID == 'AA') & (df.Date >= 'Q121')), '', df['Used'])
df['Status'] = np.where(((df.ID == 'AA') & (df.Date >= 'Q121')), 'closed', '')

# or use np.nan instead of '' above, that's actually preferable (generating NaN values)

print(df)

   ID  Date Location   Used  Status
0  AA  Q121       NY         closed
1  AA  Q221       NY         closed
2  AA  Q321       NY         closed
3  BB  Q121       CA    1.0        
4  BB  Q221       CA    0.0        
5  BB  Q321       CA  500.0        
6  BB  Q421       CA  700.0        
7  CC  Q121       AZ   50.0         

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM