【问题标题】:pandas how to add column of group by running range熊猫如何通过运行范围添加组列
【发布时间】:2021-04-27 10:48:14
【问题描述】:

我有一个数据框:

A      B 
0     0.1
0.1   0.3
0.35  0.48
1.3   1.5
1.5   1.9
2.2   2.9
3.1   3.4
5.1   5.5

我想添加一个列,在分组到 1.5 的 bin 之后将是 B 的等级,所以它将是

A      B     T
0     0.1    0
0.1   0.3    0
0.35  0.48   0
1.3   1.5    0
1.5   1.9    1
2.2   2.9    1
3.1   3.4    2
5.1   5.5    3

最好的方法是什么?

【问题讨论】:

    标签: python pandas binning data-munging


    【解决方案1】:

    cutSeries.factorize 一起使用:

    df['T'] = pd.factorize(pd.cut(df.B, bins=np.arange(0, df.B.max() + 1.5, 1.5)))[0]
    print (df)
          A     B  T
    0  0.00  0.10  0
    1  0.10  0.30  0
    2  0.35  0.48  0
    3  1.30  1.50  0
    4  1.50  1.90  1
    5  2.20  2.90  1
    6  3.10  3.40  2
    7  5.10  5.50  3
    

    【讨论】:

    • 谢谢,为什么 df.B.max() + 1.5 而不仅仅是 df.B.max()?
    • @okuoub - 因为 then 省略了最后一组,end 也需要加入range,和np.arange 一样。
    猜你喜欢
    • 1970-01-01
    • 2020-01-23
    • 1970-01-01
    • 2022-01-18
    • 2020-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-24
    相关资源
    最近更新 更多