我有一个看起来像这样的 df
var1 var2 var3 var4 var5 var6
0 0.3 0.6 0.7 0.8 0.7 0.5
1 0.7 0.6 0.4 0.6 0.7 1.0
2 0.0 0.0 0.0 0.0 0.0 0.0
3 0.1 0.9 0.5 0.7 0.7 0.9
4 0.3 2.3 0.4 2.0 1.9 1.9
5 4.0 1.2 0.6 1.2 2.6 3.1
6 0.0 0.0 0.0 0.0 0.0 0.0
7 0.0 0.2 0.1 0.2 0.2 0.2
8 0.1 0.1 0.1 0.1 0.1 0.1
9 0.0 0.0 0.0 0.0 0.0 0.0
10 0.1 0.1 0.1 0.2 0.1 0.1
11 0.0 0.0 0.0 0.0 0.0 0.1
12 0.0 0.0 0.0 0.0 0.0 0.0
13 0.0 0.0 0.0 0.0 0.0 0.0
我想为每一列创建 4 个 bin(严格来说是 4 个 bin),所以我在每一列中分别应用 pandas
cut
函数。所以我愿意
import pandas as pd
qt = so.apply(lambda x: pd.cut(x,4))
如果我这样做
qt.var1.unique()
我明白了
[(-0.004, 1.0], (3.0, 4.0]]
Categories (2, interval[float64]): [(-0.004, 1.0] < (3.0, 4.0]]
只有 2 个类别。
知道为什么会这样吗?
最佳答案
对于 var1
您将数据拆分为 var1
范围内的等宽容器.所以你的范围是 0
至 4
所以你得到间隔:
Categories (4, interval[float64]): [(-0.004, 1.0] < (1.0, 2.0] < (2.0, 3.0] < (3.0, 4.0]]
unique
只显示 2,因为 4 个区间中只有 2 个值。
对 -0.004
的解释:
The range of x is extended by .1% on each side to include the minimum and maximum values of x.
关于python - Pandas cut 函数提供的类别少于预期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60111257/