我有kaggle的YouTube频道数据集,我想创建一个新的dataframe,其中的category_name仅作为音乐。 这是原始的dataframe--

df = pd.read_csv('channels.csv')
df.head(3)

输出是

category_id category_name   channel_id  country description followers   join_date   location    picture_url profile_url title   trailer_title   trailer_url videos
0   24  Entertainment   UC-lHJZR3Gqxm24_Vd_AJ5Yw    United States   I make videos.  69896406    2010-04-29  NaN https://yt3.ggpht.com/a-/AN66SAztY6oYWZnS1Cae9...   http://www.youtube.com/channel/UC-lHJZR3Gqxm24...   PewDiePie   bitch lasagna   https://www.youtube.com/watch?v=6Dh-RL__uN4 3649
1   10  Music   UCq-Fj5jknLsUf-MWSy4_brA    India   \   69471946    2006-03-13  NaN https://yt3.ggpht.com/a-/AN66SAxPfKnfHAnAs0rOq...   http://www.youtube.com/channel/UCq-Fj5jknLsUf-...   T-Series    Guru Randhawa: GOLIMAAR Lyrical Video | Bhusha...   https://www.youtube.com/watch?v=nJ1f44JvlC8 12820
2   24  Entertainment   UCIwFjwMjI0y7PDBVEO9-bkQ    NaN Help change the world. OUR album \'Purpose\' o...   41858494    2007-01-15  NaN https://yt3.ggpht.com/a-/AN66SAzY-4LlEPxP9YOux...   http://www.youtube.com/channel/UCIwFjwMjI0y7PD...   Justin Bieber   DJ Khaled - No Brainer (Official Video) ft. Ju...   https://www.youtube.com/watch?v=kxloC1MKTpg 132

我想创建一个新的dataframe,其中我只想存储category_name = Music的值。 我试过使用groupby并应用函数,但是没有得到期望的结果

分析解答

您可能要使用布尔切片。

is_music = df['category_name'] == 'Music'
new_df = df[is_music]

之所以可行,是因为is_music是一个布尔型数组,它指示行的category_name列是否等于Music。在上面的three-row示例中,is_music看起来像

>>> is_music
0    False
1    True
2    False

然后,我们可以使用此信息仅选择is_musicTrue的数据帧的行。这就是第二行代码所实现的。当然,您也可以将所有这些都写在一行中:

new_df = df[df['category_name'] == 'Music']