根据谓词将值添加到新列

时间:2017-10-22 16:12:51

标签: python pandas

假设我有一群人和公司的数据框,他们与之关联:

Id|Name  |Company        |Type
1 |Hanzo |Bank of America|Bank
2 |Bertha|Disney         |Entertainment
3 |Bob   |Swiss Bank     |Bank

现在我想添加一个公司类型的新列,它们属于:

for i in range(len(dataset)):
    if dataset[['Company'].str.contains('BANK')][i]:
        dataset['Type'] = 'Bank'
    else:
        dataset['Type'] = 'Unknown'

如何浏览数据框,过滤公司列并将值提取到新列中?像这样:

background

1 个答案:

答案 0 :(得分:2)

如果需要处理2个或更多条件,请使用numpy.select

#mask for Entertainment type
ent_companies = ['Disney', ...]
mask1 = dataset['Company'].isin(ent_companies)
#mask for Bank type
mask2 = dataset['Company'].str.contains('BANK', case=False)
dataset['type'] = np.select([mask1, mask2], ['Entertainment', 'Bank'],default='Unknown')

对于过程一条件,只有numpy.where更好:

dataset['type'] = np.where(mask1, 'Bank', 'No bank')