如何将Pandas Dataframe列转换为Bin字符串数据?

时间:2018-11-09 19:45:29

标签: pandas dataframe join bins

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

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

现在我想“加入”这些数据,但是不确定如何执行此操作,或者不确定是否有更简单的方法来完成我需要的操作。我希望最终结果看起来像这样:

  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语句获取新列,但我希望有一种更简便的方法来动态执行此操作,而无需写出很长的语句。

1 个答案:

答案 0 :(得分:1)

与您想要的格式不完全相同,而是在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]