我有一个数据框与columns[id, type, income]
,并希望添加一个名为incomebracket
的额外列基于收入。有没有人有什么建议?基于其他列创建数据帧列
理想情况下,我会根据一系列间隔创建新的incomebracket
列。即:
incomebracket = 1 if 100000 < income < 150000
到目前为止,我知道如何创建一个空白数据框柱:df['incomebracket']
,但我想不通的休息。
有什么建议吗?
干杯
我有一个数据框与columns[id, type, income]
,并希望添加一个名为incomebracket
的额外列基于收入。有没有人有什么建议?基于其他列创建数据帧列
理想情况下,我会根据一系列间隔创建新的incomebracket
列。即:
incomebracket = 1 if 100000 < income < 150000
到目前为止,我知道如何创建一个空白数据框柱:df['incomebracket']
,但我想不通的休息。
有什么建议吗?
干杯
试试这个
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)
非常感谢您的建议! – As3adTintin
你可能在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
。
我用'df.incb [df.income> 200000] = 1'取得了进展。有了足够的这些陈述,我可以完成我的目标 - 但是我认为有更好的(更高效?更讨厌?)方式,并且如果有人有任何建议,这将是很好的学习。 – As3adTintin