首页 > 解决方案 > 如何将 counter 和 most_common 应用于每行的数据框列

问题描述

如标题所示,我想为列内的每个值找到前 100 个单词。

我希望能够在数据框中的列的每一行中看到前 100 个单词(最高频率)。所以从技术上讲,每一行的频率与其他行是分开的。

在此处输入图像描述

我想以下面示例的形式抓取:

[('http', 1059), ('coronaviru', 454), ('covid', 430), ('peopl', 120), ('time', 71), ('home', 67), ( 'amp', 58), ('stay', 55), ('day', 52), ('work', 52), ('pandem', 48), ('die', 44), ('countri ', 42)]

如果将其保存在数据框中,那就太好了,但在列表列表中也可以

标签: pandasdataframe

解决方案


value_counts如果我正确理解了这个问题,我认为您正在寻找sort = True

下面的一个例子:

df = pd.DataFrame({'col' : [['a','a','b','b','b','c'], ['d','d','e','e','f']]})

df

    col
0   [a, a, b, b, b, c]
1   [d, d, e, e, f]

df_dict = pd.DataFrame({'freq':df['col'].apply(lambda l : list(pd.Series(l).value_counts(sort = True).to_dict().items()))})

给出:

df_dict


    freq
0   [(b, 3), (a, 2), (c, 1)]
1   [(d, 2), (e, 2), (f, 1)]

推荐阅读