gpt4 book ai didi

python - 通过检查多列上的条件来创建新变量

转载 作者:行者123 更新时间:2023-12-01 00:35:28 26 4
gpt4 key购买 nike

我是 Python 新手,刚刚开始学习 pandas。我想通过检查多列上的条件来创建一个新变量。

import pandas as pd
import datetime
import numpy as np

假设我有以下数据框

d = {'CUSTNO':[123, 124, 125, 126], 'STATUS':['ACTIVE', 'NO', 'CANCEL', 'ACTIVE'], 'CANCEL':[np.nan, '2019-08-09', np.nan, '2019-09-17']}
df = pd.DataFrame(d)
df['CANCEL'] = df['CANCEL'].apply(lambda x: pd.to_datetime(x, format = '%Y-%m-%d', errors = 'coerce'))


CUSTNO STATUS CANCEL
0 123 ACTIVE NaT
1 124 NO 2019-08-09
2 125 CANCEL NaT
3 126 ACTIVE 2019-09-17

我想申请的条件如下:

如果 df['STATUS'] 值为“NO”或“CANCEL”或 df['CANCEL'] 包含日期值:HOLDING 将设置为“N”,否则设置为“Y”。

预期返回如下:

 CUSTNO  STATUS     CANCLE  HOLDING
0 123 ACTIVE NaT Y
1 124 NO 2019-08-09 N
2 125 CANCLE NaT N
3 126 ACTIVE 2019-09-17 N

您能给点建议吗?

最佳答案

用途:

c=df.STATUS.isin(['NO','CANCEL'])|df.CANCEL.notna()
df['HOLDING']=np.where(c,'N','Y')
<小时/>
   CUSTNO  STATUS     CANCEL HOLDING
0 123 ACTIVE NaT Y
1 124 NO 2019-08-09 N
2 125 CANCEL NaT N
3 126 ACTIVE 2019-09-17 N

详细信息:

#df.STATUS.isin(['NO','CANCEL']) #checks if STATUS is NO or CANCEL
#df.CANCEL.notna() #checks if CANCEL is not null and has a date
c=df.STATUS.isin(['NO','CANCEL'])|df.CANCEL.notna()
<小时/>
0    False
1 True
2 True
3 True
dtype: bool

然后我们使用np.where分配N,其中c为True,否则Y

关于python - 通过检查多列上的条件来创建新变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57820079/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com