![](/img/trans.png)
[英]Adding a column to a python pandas data frame based on the value of another column
[英]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.