2014-04-14 108 views
0

我有一个数据框与columns[id, type, income],并希望添加一个名为incomebracket的额外列基于收入。有没有人有什么建议?基于其他列创建数据帧列

理想情况下,我会根据一系列间隔创建新的incomebracket列。即:

incomebracket = 1 if 100000 < income < 150000 

到目前为止,我知道如何创建一个空白数据框柱:df['incomebracket'],但我想不通的休息。

有什么建议吗?

干杯

+0

我用'df.incb [df.income> 200000] = 1'取得了进展。有了足够的这些陈述,我可以完成我的目标 - 但是我认为有更好的(更高效?更讨厌?)方式,并且如果有人有任何建议,这将是很好的学习。 – As3adTintin

回答

0

试试这个

df['incomebracket'] = 0 #default 
df.incomebracket[(df.income >= 100000) & (df.income < 150000)] = 1 

我的首选方法是使用numpy的地方

import numpy as np 
df['incomebracket'] = np.where((df.income >= 100000) & (df.income < 150000), 1, 0) 
+0

非常感谢您的建议! – As3adTintin

0

你可能在pd.cut感兴趣:

>>> df = pd.DataFrame({"income": np.random.uniform(0, 10**6, 10)}) 
>>> df["incomebracket"] = pd.cut(df.income, np.linspace(0, 10**6, 11)) 
>>> df 
      income  incomebracket 
0 474229.041695 (400000, 500000] 
1 128577.241314 (100000, 200000] 
2 254345.417166 (200000, 300000] 
3 622104.725105 (600000, 700000] 
4 93779.964789  (0, 100000] 
5 865556.464985 (800000, 900000] 
6 304711.799685 (300000, 400000] 
7 601910.710932 (600000, 700000] 
8 229606.880350 (200000, 300000] 
9 49889.911661  (0, 100000] 

[10 rows x 2 columns] 

又见pd.qcut