Pandas Python:如果满足条件,则在数据帧中填充一列

Pandas Python:如果满足条件,则在数据帧中填充一列,pandas,dataframe,Pandas,Dataframe,让我们首先计算每个学生的注意力/注意力分数。请执行以下操作: 创建一个名为attendence\u score的新列。 使用以下标准填写该列: No Absence = 5 1-5 Absences = 4 6-10 Absences = 3 11-15 Absences = 2 16-20 Absences = 1 21 or more Absences = 0 在dataset中有一个名为absenses的列 我的想法是利用条件来做这件事 但是我在这里搜索了很多代码,大多数代码都是在NaN

让我们首先计算每个学生的注意力/注意力分数。请执行以下操作: 创建一个名为attendence\u score的新列。 使用以下标准填写该列:

No Absence = 5
1-5 Absences = 4
6-10 Absences = 3
11-15 Absences = 2
16-20 Absences = 1
21 or more Absences = 0
在dataset中有一个名为
absenses
的列

我的想法是利用条件来做这件事

但是我在这里搜索了很多代码,大多数代码都是在NaN数据中填充的。如何修复我的案例?

条件=[
conditions = [
    (df['likes_count'] <= 2),
    (df['likes_count'] > 2) & (df['likes_count'] <= 9),
    (df['likes_count'] > 9) & (df['likes_count'] <= 15),
    (df['likes_count'] > 15)
    ]

# create a list of the values we want to assign for each condition
values = ['tier_4', 'tier_3', 'tier_2', 'tier_1']

# create a new column and use np.select to assign values to it using our lists as arguments
df['tier'] = np.select(conditions, values)

# display updated DataFrame
df.head()
(df['likes_count']2)和(df['likes_count']9)和(df['likes_count']15) ] #创建要为每个条件指定的值的列表 值=['tier_4'、'tier_3'、'tier_2'、'tier_1'] #创建一个新列,并使用np.select将列表作为参数为其赋值 df['tier']=np.select(条件、值) #显示更新的数据帧 df.head()
还是像这样?

df=student
df = student
print(df)

#df['attendence_score'] = np.where((df['absences'] =0 ) ,5, df['attendence_score'])
#df.loc[df['absences'] = 0, 'attendence_score'] = 5

attendence_score = [
    (df['absences'] == 0),
    (df['absences'] > 0) & (df['absences'] <= 5),
    (df['absences'] > 5) & (df['absences'] <= 10),
    (df['absences'] > 10) & (df['absences'] <= 15),
    (df['absences'] > 15) & (df['absences'] <= 20),
    (df['absences'] > 21)
    ]

# create a list of the values we want to assign for each condition
values = ['5', '4', '3', '2','1','0']

# create a new column and use np.select to assign values to it using our lists as arguments
df['attendence_score'] = np.select(attendence_score, values)

# display updated DataFrame
df.head()
打印(df)
#df['attendence_score']=np.其中((df['attendence']=0),5,df['attendence_score']) #df.loc[df[“缺席”]=0,“出席率”]=5 出席率(u分)[ (df['缺席]==0), (df[‘缺席’]>0)和(df[‘缺席’]5)和(df[‘缺席’]10)和(df[‘缺席’]15)和(df[‘缺席’]21) ] #创建要为每个条件指定的值的列表 值=['5','4','3','2','1','0'] #创建一个新列,并使用np.select将列表作为参数为其赋值 df['attendence_score']=np.选择(attendence_score,值) #显示更新的数据帧 df.head()
我自己完成的。我爱我自己

手动方式:

s=df[“缺席”]
df.loc[s==0,“缺勤分数”]=5
df.loc[s.介于(1,5),“缺勤得分”]=4
df.loc[s.介于(6,10)之间,“缺勤得分”]=3
df.loc[s.介于(11,15),“缺勤分数”]=2
df.loc[s.介于(16,20),“缺勤得分”]=1
df.loc[s>21,“缺勤分数”]=0
使用类别:

df['descence_score']=pd.cut(df['descences'],[-np.inf,0,5,10,15,20,np.inf],labels=range(5,-1,-1))
或者,您也可以利用各个级别的统一步骤,并使用数学公式:

df['absence_score']=5-np.ceil(df['absences'].div(5).clip(上限=5)).astype('int'))

我试图引用这一个,但是….df['Attentience\u score']=np。其中((df['Abscences']=0),5,df['Attentience\u score'])我尝试了这个,谢谢分享。请你也核对一下我的答案好吗。我不太确定我的答案是否正确。英雄联盟