Python 中的 cut() 函数与 R 中的 cut() 函数不同

Cob*_*696 5 python cut r function intervals

在R中,我们可以像这样使用cut()

e=c(4,5,6,7,8,9,10)

cut(e, breaks = c(1,2,3,4,5,6,7,8,9,10),
              include.lowest = TRUE,
              dig.lab = 3,
              right = FALSE)
Run Code Online (Sandbox Code Playgroud)

输出是:

[4,5)  [5,6)  [6,7)  [7,8)  [8,9)  [9,10] [9,10]
Levels: [1,2) [2,3) [3,4) [4,5) [5,6) [6,7) [7,8) [8,9) [9,10]
Run Code Online (Sandbox Code Playgroud)

在Python中,我使用这个:

e=np.r_[4,5,6,7,8]

pd.cut(e, bins=np.r_[1,2,3,4,5,6,7,8,9,10],right = False, include_lowest =True )
Run Code Online (Sandbox Code Playgroud)

输出是:

[[4.0, 5.0), [5.0, 6.0), [6.0, 7.0), [7.0, 8.0), [8.0, 9.0), [9.0, 10.0), NaN]
Categories (9, interval[int64]): [[1, 2) < [2, 3) < [3, 4) < [4, 5) ... [6, 7) < 
[7, 8) < [8, 9) < [9, 10)]
Run Code Online (Sandbox Code Playgroud)

1.为什么R中的“[9,10]”与Python中的“[9.0, 10.0), NaN”不同?

2.如何在Python中得到与R一样将“[9.0, 10.0), NaN”转换为[9,10]的相同结果?

3.因为如果我在R中使用cut(),我可以得到像值“10”这样的值,但是Python中的cut()因为[9.0, 10.0)所以我无法得到10.0。如果我设置正确=错误,我可以有(9.0,10.0],但第一个将是(4.0,5.0],所以我也无法获得值4.0。请帮助我,以便我可以同时拥有4.0和10.0在结果中。

非常感谢。