代码之家  ›  专栏  ›  技术社区  ›  Jimmy3421

为什么pd.cut会产生NaN值

  •  0
  • Jimmy3421  · 技术社区  · 1 年前

    为什么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
    

    输出

    enter image description here

    预期输出

    enter image description here

    1 回复  |  直到 1 年前
        1
  •  4
  •   Timeless    1 年前

    这是因为级数的值(0,1,2,..) s 当你 cut

    相反,您可以制作 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]