基于Pandas Python中的列文本创建列

问题描述 投票:1回答:2

我有一个如下所示的数据框(系列)'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

如何完成?

python pandas dataframe
2个回答
1
投票

使用np.select创建多条件列:


1
投票

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一起使用:


推荐问答