我正在为一个建模项目进行分类,但是遇到了这个问题。 此示例使用不带11的数据帧获取bin,当将bin应用于其中包含11的新数据帧时,结果为NaN。显然会发生这种情况,但我想知道是否有(通常有)任何聪明的方法可以轻松地解决此问题,例如将(7.75,10.0)变成(7.75,np.inf)的某种技术。
import pandas as pd
a,bin = pd.qcut(pd.DataFrame({"A":[1,2,3,4,5,6,7,8,9,10]}).A,retbins = True, q = 4)
pd.cut(pd.DataFrame({"A":[1,2,11]}).A, bins = bin ,include_lowest = True)
0 (0.999, 3.25]
1 (0.999, 3.25]
2 NaN
Name: A, dtype: category
Categories (4, interval[float64]): [(0.999, 3.25] < (3.25, 5.5] < (5.5, 7.75] < (7.75, 10.0]]
答案 0 :(得分:1)
在创建垃圾箱时只需使用np.inf而不是10
a,bin = pd.qcut(pd.DataFrame({"A":[1,2,3,4,5,6,7,8,9,np.inf]}).A,retbins = True, q = 4)
pd.cut(pd.DataFrame({"A":[1,2,11]}).A, bins = bin ,include_lowest = True)
0 (0.999, 3.25]
1 (0.999, 3.25]
2 (7.75, inf]
Name: A, dtype: category
Categories (4, interval[float64]): [(0.999, 3.25] < (3.25, 5.5] < (5.5, 7.75] < (7.75, inf]]