使用Python库创建基于条件的列的步骤

使用Python库创建基于条件的列的步骤,python,pandas,Python,Pandas,我正试图把以下数据框组合在一起。 最初我有3个专栏。 我想根据条件创建一个名为“Status”的新列, 如果在>7天之间,则“新课程”或“现有课程”用于特定ID 我尝试了使用if-else条件的groupby,但无法纠正逻辑。任何帮助都将不胜感激 身份证件 日期 隔天 地位 1. 8/21/2014 0 现有课程 1. 8/22/2014 1. 现有课程 1. 8/25/2014 3. 现有课程 1. 8/26/2014 1. 现有课程 1. 8/27/2014 1. 现有课程 1. 8/28/

我正试图把以下数据框组合在一起。 最初我有3个专栏。 我想根据条件创建一个名为“Status”的新列, 如果在>7天之间,则“新课程”或“现有课程”用于特定ID

我尝试了使用if-else条件的groupby,但无法纠正逻辑。任何帮助都将不胜感激

身份证件 日期 隔天 地位 1. 8/21/2014 0 现有课程 1. 8/22/2014 1. 现有课程 1. 8/25/2014 3. 现有课程 1. 8/26/2014 1. 现有课程 1. 8/27/2014 1. 现有课程 1. 8/28/2014 1. 现有课程 1. 8/29/2014 1. 现有课程 1. 9/2/2014 4. 现有课程 1. 9/2/2014 0 现有课程 1. 9/3/2014 1. 现有课程 1. 9/4/2014 1. 现有课程 1. 9/5/2014 1. 现有课程 1. 9/8/2014 3. 现有课程 1. 9/9/2014 1. 现有课程 1. 9/10/2014 1. 现有课程 1. 9/11/2014 1. 现有课程 1. 9/12/2014 1. 现有课程 1. 9/15/2014 3. 现有课程 1. 9/16/2014 1. 现有课程 1. 9/18/2014 2. 现有课程 1. 9/18/2014 0 现有课程 1. 9/19/2014 1. 现有课程 1. 9/22/2014 3. 现有课程 1. 9/23/2014 1. 现有课程 1. 9/25/2014 2. 现有课程 1. 9/25/2014 0 现有课程 1. 9/29/2014 4. 现有课程 1. 9/30/2014 1. 现有课程 1. 10/1/2014 1. 现有课程 1. 10/2/2014 1. 现有课程 1. 3/9/2016 524 新课程 1. 3/10/2016 1. 现有课程 1. 3/11/2016 1. 现有课程 1. 3/14/2016 3. 现有课程 1. 3/16/2016 2. 现有课程 1. 3/18/2016 2. 现有课程 1. 3/21/2016 3. 现有课程 2. 9/15/2014 0 现有课程 2. 9/16/2014 1. 现有课程 2. 9/17/2014 1. 现有课程 2. 9/18/2014 1. 现有课程 2. 9/18/2014 0 现有课程 2. 9/19/2014 1. 现有课程 2. 9/19/2014 0 现有课程 2. 9/24/2014 5. 现有课程 2. 9/25/2014 1. 现有课程 2. 9/29/2014 4. 现有课程 2. 9/30/2014 1. 现有课程 2. 10/1/2014 1. 现有课程 2. 10/2/2014 1. 现有课程 2. 10/3/2014 1. 现有课程 2. 10/6/2014 3. 现有课程 2. 10/7/2014 1. 现有课程 2. 10/9/2014 2. 现有课程
尝试通过lambda函数应用逻辑


df['status'] = df['days_between'].apply(lambda x: 'New course' if x > 7 else 'Existing Course')


稍有不同的看法

将熊猫作为pd导入
从io导入StringIO
数据=“”\
ID日期介于
1   8/21/2014   0
1   8/22/2014   8
1   8/25/2014   3
1   8/26/2014   9
'''
f=StringIO(数据)
df=pd.read_csv(f,sep='\t')
打印(df)
df['Status']=df.apply(lambda r:'新课程'
如果r.days_之间大于7,则为“现有课程”,
轴=1)
打印(df)

这可能不是最有效或最规范的方法(我认为使用类似于布尔掩码的方法会更有效),但这应该是可行的:

df['Status'] = df.apply(lambda row: 'New Course' if row['days_between'] > 7 else 'Existing Course', axis=1)

lambda函数是按行应用的。

df['Status']=np.where(df['days\u interval']>7,'新课程','现有课程')
这对我很有效,谢谢!