我有一个名为dataframe的数据框:
Name Hobby
Tom Food,Sport,Art,Extreme Sport
Mark Sport
John Coding,Books
我想获取所有行中的,某人的爱好例如运动。我尝试使用split方法将字段转换为数组,但是之后我无法弄清楚如何检查pandas数组是否包含指定的爱好。
.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'])]