【问题标题】:Count no. of tokens in every row of a column in dataframe数数数据框中一列的每一行中的标记
【发布时间】:2020-06-24 05:46:27
【问题描述】:

我有一个包含类似格式数据的数据框

    song                    lyric                                tokenized_lyrics
0   Song 1  Look at her face, it's a wonderful face  [look , at , her ,face, it's a wonderful, face ]
1   Song 2  Some lyrics of the song taken            [Some, lyrics ,of, the, song, taken] 

我想计算每首歌曲歌词中的单词数以及类似

的输出
song     count
song 1     8
song 2     6

我尝试了聚合函数,但它没有产生正确的结果。

我试过的代码:

df.groupby(['song']).agg(
word_count = pd.NamedAgg(column='text' , aggfunc = 'count' )
)

我怎样才能达到预期的效果

【问题讨论】:

    标签: python pandas numpy pandas-groupby


    【解决方案1】:

    我无法将 tokenized_lyrics 复制为列表,它以字符串形式出现,因此我对歌词进行了标记,假设分隔符是空格:

    df['token_count'] = df.lyric.str.replace(',','').str.split().str.len()
    df.filter(['song','token_count'])
    
        song    token_count
    0   Song 1      8
    1   Song 2      6
    

    请注意,您可以将string len 应用于标记化的歌词以获取您的计数,因为它是一个列表,它将计算单个项目

    【讨论】:

      【解决方案2】:

      Series.str.len 用于计数值,如果song 值重复,则聚合sum

      df1 = (df.assign(count = df['tokenized_lyrics'].str.len())
               .groupby('song', as_index=False)['count'].sum())
      

      【讨论】:

        猜你喜欢
        • 2017-04-01
        • 2020-02-12
        • 2021-08-18
        • 1970-01-01
        • 1970-01-01
        • 2019-08-29
        • 1970-01-01
        • 1970-01-01
        • 2023-03-26
        相关资源
        最近更新 更多