使用 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
使用 qcut
和 labels=False
并添加 1
或指定列表中标签的值:
pivot['Quartile'] = pd.qcut(pivot['AHT'], 4, labels=False) + 1
pivot['Quartile'] = pd.qcut(pivot['AHT'], 4, labels=[1,2,3,4])
我有一个数据框,我想根据 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
使用 qcut
和 labels=False
并添加 1
或指定列表中标签的值:
pivot['Quartile'] = pd.qcut(pivot['AHT'], 4, labels=False) + 1
pivot['Quartile'] = pd.qcut(pivot['AHT'], 4, labels=[1,2,3,4])