我有一个专栏叫做:cars
并想创建另一个名为persons
using random.randint()
我有:
dat['persons']=np.random.randint(1,5,len(dat))
这样我就可以输入使用这些的人数,但我会
想知道如何在其中添加一个条件suv
例如,类别将仅生成从 4 到 9 的数字。
cars | persons
suv 4
sedan 2
truck 2
suv 1
suv 5
您可以为您的系列创建一个索引,其中匹配的行有True
,而其他一切都有False
。然后,您可以使用分配给与该索引匹配的行loc[] https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.loc.html选择行;然后,您只生成这些选定行的值的数量:
m = dat['cars'] == 'suv'
dat.loc[m, 'persons'] = np.random.randint(4, 9, m.sum())
你也可以使用apply
on the cars
系列来创建新列,在每次调用中创建一个新的随机值:
dat['persons'] = dat.cars.apply(
lambda c: random.randint(4, 9) if c == 'suv' else random.randint(1, 5))
但这必须为每一行进行单独的函数调用。使用面罩会更有效。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)