Pandas检查拆分的数据框中是否包含特定值

3

我有一个名为dataframe的数据框:

Name Hobby
Tom  Food,Sport,Art,Extreme Sport
Mark Sport  
John Coding,Books

我想获取所有行中的,某人的爱好例如运动。我尝试使用split方法将字段转换为数组,但是之后我无法弄清楚如何检查pandas数组是否包含指定的爱好。
1个回答

2
您可以使用.str.contains()来检查字符串中单词的存在。
df[df['Hobby'].str.contains('Sport')]

编辑:

我们需要将兴趣爱好拆分,这样就可以得到一个新的数据框,每个人每个兴趣爱好对应一行。

然后我们就可以安全地按照兴趣爱好进行过滤。

SEARCHED_HOBBY = 'Sport'

df = pd.DataFrame({'Name': ['Tom', 'Mark', 'John'], 'Hobby': ['Food,Sport,Art,Extreme Sport','Sport', 'Coding,Books']})

df['Hobby'] = df['Hobby'].str.split(',')

splitted_hobbies = df.explode('Hobby')
splitted_hobbies = splitted_hobbies[splitted_hobbies['Hobby'] == SEARCHED_HOBBY]

df = df[df['Name'].isin(splitted_hobbies['Name'])]

是的,但是当我有像运动和极限运动这样的类别时,我会同时收到两者。我只想接收指定的类别。使用数组可以实现这一点吗? - Franciszek Job

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接