首页 > 解决方案 > Python:使用条件和“包含”-语句创建新列

问题描述

我想创建一个带有条件的字符串的新列。例子:

from pandas import DataFrame
GoT = {'Old_Group': ['Jon Snow', 'Sansa Stark','Arya Stark','Robb Stark','Theon Greyjoy' ]}
df = DataFrame(GoT,columns=['Old_Group'])

“New_Group”应该检查“Old_Group”是否在任何地方包含字符串“Stark”并将其分配给例如“Stark Family”。如果条件“contains = 'Stark'”不适合,则应将“new_group”分配给例如“other”

在 SQL 中,我会这样做:

Select Old_Group
,case when Old_Group like '%Stark%' then 'Stark Family' else 'other' end as New_Group
from df

谢谢

标签: python-3.xpandas

解决方案


您可以使用 np.where 和 str.contains 的组合来执行此操作。基本上你不能做的是在有问题的列(在这种情况下为旧组)上应用 np.where 并检查字符串是否包含工作 Stark。

df['New Group'] = np.where(df['Old Group'].str.contains("Stark"), 'Stark Family', 'Other')

只需确保您的列 New Group 是字符串数据类型,并且您已将 numpy 作为包导入


推荐阅读