为什么pd.cut会产生NaN值?
输入
s = pd.Series(np.arange(6)) df = pd.DataFrame({'Bin': pd.cut(s, [105, 110, 115, 120, 125, 130]), 'Frequency': [2,5,6,8,8,1]}) df
输出
预期输出
这是因为级数的值(0,1,2,..) s 当你 cut 。
s
cut
相反,您可以制作 IntervalIndex.from_breaks :
IntervalIndex.from_breaks
idx = pd.IntervalIndex.from_breaks([105, 110, 115, 120, 125, 130, 135]) df = pd.DataFrame({"Bin": idx, "Frequency": [2,5,6,8,8,1]})
输出:
print(df) Bin Frequency 0 (105, 110] 2 1 (110, 115] 5 2 (115, 120] 6 3 (120, 125] 8 4 (125, 130] 8 5 (130, 135] 1 [6 rows x 2 columns]