Python 3.x Python:使用条件和“创建新列”;包括「-陈述

Python 3.x Python:使用条件和“创建新列”;包括「-陈述,python-3.x,pandas,Python 3.x,Pandas,我想创建一个带有条件的字符串的新列。例如: from pandas import DataFrame GoT = {'Old_Group': ['Jon Snow', 'Sansa Stark','Arya Stark','Robb Stark','Theon Greyjoy' ]} df = DataFrame(GoT,columns=['Old_Group']) “新组”应检查“旧组”是否在任何位置包含字符串“斯塔克”,并将其分配给例如“斯塔克家族”。如果条件“contains='Star

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

from pandas import DataFrame
GoT = {'Old_Group': ['Jon Snow', 'Sansa Stark','Arya Stark','Robb Stark','Theon Greyjoy' ]}
df = DataFrame(GoT,columns=['Old_Group'])
“新组”应检查“旧组”是否在任何位置包含字符串“斯塔克”,并将其分配给例如“斯塔克家族”。如果条件“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
谢谢

您需要:

df['New_Group'] = df['Old_Group'].apply(lambda x : 'Stark Family' if 'Stark' in x else 'other')

print(df)
输出

      Old_Group New_Group                                                                                                                     
0       Jon Snow     other                                                                                                                     
1    Sansa Stark     Stark Family                                                                                                                    
2     Arya Stark     Stark Family                                                                                                                    
3     Robb Stark     Stark Family                                                                                                                    
4  Theon Greyjoy     other

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

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

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

如果名称
Stark
出现在类似MacStark的名称中,则此选项将忽略它。它也不区分大小写

df.assign(New_Column=df.replace({r'(?i)^((?!\bStark\b).)*$':'Other',r'(?i)\bStark\b':'Stark Family'},regex=True))
Out[319]: 
       Old_Group          New_Column
0       Jon Snow               Other
1    Sansa Stark  Sansa Stark Family
2     Arya Stark   Arya Stark Family
3     Robb Stark   Robb Stark Family
4  Theon Greyjoy               Other

你也不想像那样进口熊猫。当您这样做时,您只需要从pandas导入一件东西,即DataFrame函数。您最好导入完整的库,以确保可以导入所有数据帧操作。使用
pd.np
编译器如何知道np是包,而不是导入numpy?它会认为这完全是另一回事。你能把它的来源联系起来吗?我以前从未见过,看起来很酷!有点过分了,但我喜欢,开始使用正则表达式从来都不是一个坏时机。