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