使用 df.loc 更改 df 的某些值时,我得到的输出与预期不同

Im getting a different output than expected when using df.loc to change some values of the df

我有一个数据框,我想根据 quartile 变量分配一个四分位数,它给出了我稍后在 for 中使用的范围。问题是,它不是仅仅更改四分位数,而是创建 n(datframe 的 len)行,然后使用行号进行循环。

expected result actual output

quartile = numpy.quantile(pivot['AHT'], [0.25,0.5,0.75])
pivot['Quartile'] = 0

for i in range(0,len(pivot)-1):

if i <= quartile[0]:
    pivot.loc[i,'Quartile'] = 1
    

elif i <= quartile[1]:
    pivot.loc[i,'Quartile'] = 2


elif i <= quartile[2]:
    pivot.loc[i,'Quartile'] = 3
    
    
else:
    pivot.loc[i,'Quartile'] = 4

使用 qcutlabels=False 并添加 1 或指定列表中标签的值:

pivot['Quartile'] = pd.qcut(pivot['AHT'], 4, labels=False) + 1

pivot['Quartile'] = pd.qcut(pivot['AHT'], 4, labels=[1,2,3,4])