如何将 Pandas dataframe 列转换为 bin 字符串数据?

How to convert Pandas dataframe column into bin string data?

我有一个名为 odf 的 Pandas 数据框,如下所示:

Customer         Employees
   A                 2
   B                 100
   C                 5
   D                 1000

我已经为员工数据创建了自定义容器:

df = odf['Employees']
bins = [0,5,1000]
df.value_counts(bins=bins)

(-0.001, 5.0]        2
(5.0,   1000]        2
Name:Employees, dtype: int64

现在我想 'join' 此数据,但不确定如何执行此操作,或者是否有更简单的方法来完成我的需要。我希望最终结果如下所示:

  Customer         Employees    NewBinColumn
   A                 2          -0.001, 5.0
   B                 100         5.0,   1000
   C                 5          -0.001, 5.0
   D                 1000        5.0,   1000

这样我就可以看到原始数据框列旁边的 bin 列

这是我尝试过但没有用的方法:

ndf = odf.join(df, lsuffix='Employees', rsuffix='Employees', how='left')
ndf

虽然它确实加入了两者,但我得到的是:

  Customer         EmployeesEmployees    Employees
   A                 2                     2
   B                 100                   100
   C                 5                     5
   D                 1000                  1000

如果这是 SQL 我会使用 case 语句来获取新列,但我希望有一种更简单的方法来动态执行此操作,而无需写出很长的语句。

它与您想要的格式不完全相同,但是在 odf['Employees'] 上使用 pd.cut 例如:

odf['NewBinColumn'] = pd.cut(odf['Employees'],bins)

将给予:

  Customer  Employees NewBinColumn
0        A          2       (0, 5]
1        B        100    (5, 1000]
2        C          5       (0, 5]
3        D       1000    (5, 1000]