从 pandas qcut 间隔中删除小数点(将间隔转换为整数)

Art*_*Sbr 5 python quantile pandas

我在名为 的对象的列中有很多分数example。我想将这些分数分成十分位数,并将相应的十分位数间隔分配给每一行。我尝试了以下方法:

import random
import pandas as pd
random.seed(420) #blazeit
example = pd.DataFrame({"Score":[random.randrange(350, 1000) for i in range(1000)]})
example["Decile"] = pd.qcut(example["Score"], 10, labels=False) + 1 # Deciles as integer from 1 to 10
example["Decile_interval"] = pd.qcut(example["Score"], 10) # Decile as interval
Run Code Online (Sandbox Code Playgroud)

这给了我我正在寻找的十分位数。但是,我希望其中的十分位数example["Decile_interval"]是整数,而不是浮点数。我尝试过precision=0,但它只显示.0在每个数字的末尾。

如何将区间中的浮点数转换为整数?

编辑:正如@ALollz 指出的那样,这样做将改变十分位分布。不过,我这样做是为了演示目的,所以我并不担心这一点。支持@JuanC 实现这一点并发布一个解决方案。

Mas*_*fox 6

这是我使用一个简单apply函数的解决方案:

example["Decile_interval"] = example["Decile_interval"].apply(lambda x: pd.Interval(left=int(round(x.left)), right=int(round(x.right))))
Run Code Online (Sandbox Code Playgroud)