将状态附加到数据帧中

2024-05-23 13:55:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我想创建一个基于截止日期的状态,但在附加数据时遇到问题。我有从电子表格中提取的数据。你知道吗

我试过append函数,但它给了我错误。我在网上查过,但找不到该怎么做。你知道吗

#import pandas 
import pandas as pd
import numpy as np

#Read Excel Sheet with Data 
df = pd.read_csv('/Users/marvin-nonbusiness/Desktop/SHAREPOINT.csv')


#Show data 
print(pd.isna(df))                       

print('-------------------------------------------------------------------------------------------')

print(df)



#Create Status 
def marvin():
    result = []
    if pd.isna(row['pre boarded ']) == True and  pd.isna(row['post           boarded']) == False and pd.isna(row['remd reqd']) == True and pd.isna(row['sent to clc']) == True and pd.isna(row['review closed']) == True:
    result.append('POST BOARDED STARTED')
elif pd.isna(row['pre boarded ']) == True and  pd.isna(row['post boarded']) == False and pd.isna(row['remd reqd']) == False and pd.isna(row['sent to clc']) == True and pd.isna(row['review closed']) == True:
    result.append('REMEDIATION REQD-PENDING LOG TO CLC')
elif pd.isna(row['pre boarded ']) == True and  pd.isna(row['post boarded']) == False and pd.isna(row['remd reqd']) == False and pd.isna(row['sent to clc']) == False and pd.isna(row['review closed']) == True:
    result.append('REMEDIATION REQD-SENT TO CLC')
elif pd.isna(row['pre boarded ']) == True and  pd.isna(row['post boarded']) == False and pd.isna(row['remd reqd']) == False and pd.isna(row['sent to clc']) == False and pd.isna(row['review closed']) == False:
    result.append('REVIEW COMPLETED-ISSUES FOUND') 
else:
    result.append('DATE EXCEPTION')

df.append(marvin())        
df
print('executed')

现在有4列没有状态。你知道吗

预期的结果将是5列和一个状态列


Tags: andfalsetruedfresultpostprerow
1条回答
网友
1楼 · 发布于 2024-05-23 13:55:32

我相信你需要:

#add variable row
def marvin(row):
    result = []
        ...
        ...
    else:
        result.append('DATE EXCEPTION')
    #add return list result 
    return result

#add apply per rows
df['new'] = df.apply(marvin, axis=1)

您的解决方案应该由^{}重写:

m1 = df['pre boarded'].isna() & df['post boarded'].notna()
m2 = df['remd reqd'].isna()
m3 = df['sent to clc'].isna()
m4 = df['review closed'].isna()

masks = [m1 & m2 & m3 & m4, 
         m1 & ~m2 & m3 & m4, 
         m1 & ~m2 & ~m3 & m4, 
         m1 & ~m2 & ~m3 & ~m4]

values = ['POST BOARDED STARTED',
          'REMEDIATION REQD-PENDING LOG TO CLC',
          'REMEDIATION REQD-SENT TO CLC',
          'REVIEW COMPLETED-ISSUES FOUND']

df['new'] = np.select(masks, values, default='DATE EXCEPTION')

相关问题 更多 >