我有一个如下所示的数据框(系列)'df'
:
Name
A1001
A1002
B1001
C1001
A1003
B1002
B1003
C1002
D1001
D1002
我想创建一个名为Company的新列,如果文本以'Alpha'
开头,则应读取'A'
;如果文本以'Bravo'
开头的,则应为'B'
;如果文本以其他任何内容的开头,则应为'Others'
。
我尝试过:
df['Company'] = 'Alpha' if df.Name.str.startswith('A') else 'Other'
但是它给了我一个错误:
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
预期输出:
Name Company
A1001 Alpha
A1002 Alpha
B1001 Bravo
C1001 Other
A1003 Alpha
B1002 Bravo
B1003 Bravo
C1002 Other
D1001 Other
D1002 Other
如何完成?
使用np.select
创建多条件列:
将letter = df['Name'].str[0]
conditions = [letter.eq('A'), letter.eq('B')]
choices = ['Alpha', 'Bravo']
df['Company'] = np.select(conditions, choices, default='Other')
与numpy.select
一起使用: