提问者:小点点

Python条件语句


假设我有3列。 它们是“单词”,“单词计数”和“积极”。 “正”一栏是按年份分类的。 我需要找到最常见的词是分类的‘积极’。 当我使用以下代码时:

df.sort_values(by=['Positive', 'Word Count', 'Word'], ascending=False, axis=0).head(5)[['Word', 'Word Count', 'Positive']]

它给出了以下输出:

Word            Word Count  Positive
BEST            2654899     2012
INNOVATIVENESS  541         2011
EFFECTIVE       16420419    2009
BENEFIT         9902500     2009
ABLE            4090099     2009

正如你所看到的,它考虑了单词计数之前的年份。 如果我把它们换掉,那么我只会得到最常用的单词。 我的解决方案是对'position'列进行子集,只考虑值>=0,然后按字数排序。 我的问题是能够子集正列,而不使它成为布尔值,然后能够把它放入我的函数中。


共1个答案

匿名用户

如果没有数据结构的示例,我无法轻松提供示例,但我认为您需要的是pd.groupby()pd.series.mode的组合,前者用于按年份对所有数据进行分组,后者用于查找最频繁的数据。

它可能看起来像:

df.groupby(['Positive', 'Word Count', 'Word'])['Positive'].agg(pd.Series.mode)