用Python函数启动

2024-05-16 11:38:02 发布

您现在位置:Python中文网/ 问答频道 /正文

有人知道我可以用什么代码来代替下面的代码吗?我可以使用“startswith”而不是单独的where子句吗?我该怎么做

ds_4['New_Domain'] = np.where(ds_4['Domain'] == 'Alcohol,animals,children,crime', 'Alcohol', ds_4.Domain)
ds_4['New_Domain'] = np.where(ds_4['Domain'] == 'Alcohol,campaign-finance,ethics,public-service', 'Alcohol', ds_4.New_Domain)
ds_4['New_Domain'] = np.where(ds_4['Domain'] == 'Alcohol,candidates-biography', 'Alcohol', ds_4.New_Domain)
ds_4['New_Domain'] = np.where(ds_4['Domain'] == 'Alcohol,candidates-biography,crime', 'Alcohol', ds_4.New_Domain)
ds_4['New_Domain'] = np.where(ds_4['Domain'] == 'Alcohol,children', 'Alcohol', ds_4.New_Domain)
ds_4['New_Domain'] = np.where(ds_4['Domain'] == 'Alcohol,children,crime,public-health,public-safety', 'Alcohol', ds_4.New_Domain)



Tags: 代码newdomainnpdspublicwherecandidates
2条回答

请尝试使用下面的startswith,因为startswith允许将字符串元组作为其第一个参数

ds_4.loc[ds_4['Domain'].str.startswith(('Alcohol,animals,children,crime','Alcohol,campaign-finance,ethics,public-service','Alcohol,candidates-biography','Alcohol,candidates-biography,crime','Alcohol,children','Alcohol,children,crime,public-health,public-safety'), na=False), 'New_Domain'] = "Alcohol"

如果我正确理解了您试图实现的目标,您可以使用apply

ds_4['New_Domain'] = ds_4['Domain'].apply(lambda val: 'Alcohol' if str(val).startswith('Alcohol') else val)

这将得到一个新列New_Domain,如果Domain中的相应值以“酒精”开头,则每行的值都将为“酒精”;否则,它将返回值Domain

相关问题 更多 >