簡體   English   中英

根據 Python 中另一個數據框的另一列輸入列值

[英]Enter column value based on another column of another data frame in Python

df1:

    ID      
0   9712    
1   9920    
2   9712    
3   9560    
4   9560

df2:

     ID       Absent    Comp-off
0   9712    12/15/2021  
1   9920                4/11/2021
2   9712                08/30/2021
3   9560    07/3/2021   
4   9560        

在 df1 中,我需要創建一個“狀態”列。 對於 ID,如果 df2 的“缺席”或“補償”列中存在任何數據,則狀態為“A”,否則為“P”。 如何使用 if else 條件來實現它?

嘗試使用此代碼:

b1=pd.isnull(df2['Absent'])
b2=pd.isnull(df2['Compoff'])
df['Status'] =['P' if b else 'A' for b in np.array(b1&b2)]

這是我得到的樣品 output。

df

    ID  Status
0   9712    A
1   9920    A
2   9712    A
3   9560    A
4   9560    P

我希望這就是你要找的。

謝謝你。

使用這段代碼,它不是優化的,但它可以完成這項工作。

我在下面重新創建了您的dataframe

import pandas as pd

df1 = pd.DataFrame({'ID':['9712','9920','9712','9560','9560']})
df2 = pd.DataFrame({'ID':['9712','9920','9712','9560','9560'],
                    'Absent':['12/15/2021','','','07/3/2021',''],
                    'Comp-off':['','4/11/2021','08/30/2021','','']})

這是解決方案,

status =[]
for i,j in df2.iterrows():
    if j['Absent'] != '':
        status.append('A')
    elif j['Comp-off'] != '':
        status.append('P')
    else:
        status.append('')

df1['Status'] = status

樣品 output:

     ID Status
0  9712      A
1  9920      P
2  9712      P
3  9560      A
4  9560      

暫無
暫無

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

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