繁体   English   中英

pandas.cut function 假设为 0 时给了我负值

[英]pandas.cut function gave me negative values when it is suppose to be 0

我很困惑为什么我的 pd.cut function 给我的起始间隔是负值。 我剪切的列的最小值为 0。因此,我希望我的 pd.cut function 将我的第一个间隔抛出为 (0,18) 而不是 (-0.18,18)。

我已将精度设置更改为 0。但是,这只会使我的起始间隔为 (-0.0,18)。

当我解析到我的 pd.cut function 的列是整数时,为什么我的间隔都是浮点数?

这是我工作的照片

将不胜感激所有帮助。 谢谢你。

如评论中所述,您要求cut自动为您定义 bins,默认情况下它们的宽度相等,这意味着可以有负边界。

如果您希望保持自动分箱,您可以在之后手动修改间隔。 以下是仅第一个“不正确”间隔的示例,使用cat.rename_categories

np.random.seed(0)
s = pd.Series(np.random.randint(-10,100,size=100)).clip(lower=0)
s_cut = pd.cut(s, bins=10)
print(s_cut.cat.categories)

first_I = s_cut.cat.categories[0]
new_I = pd.Interval(0, first_I.right)
s_cut = s_cut.cat.rename_categories({first_I: new_I})
print(s_cut.cat.categories)

output:

# before
IntervalIndex([(-0.095, 9.5], (9.5, 19.0], (19.0, 28.5], ...)

# after
IntervalIndex([(0.0, 9.5], (9.5, 19.0], (19.0, 28.5], ...)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM