首页 > 解决方案 > Pandas - 过滤用户最少收听的艺术家

问题描述

我想将我的数据集过滤到听过最少数量的独特艺术家的用户。我的目标是关注具有相对较高收听率的用户,作为艺术家选择的功能。

下面是一个数据示例和我的初始代码方法:

full_df.head()

   user artist              plays  gender  age    Country
0   a   devendra banhart    456    m       28.0   United States
1   b   boards of canada    407    m       28.0   United States
2   a   cocorosie           386    m       28.0   United States
3   c   aphex twin          213    m       28.0   United States
4   d   animal collective   203    m       28.0   United States

代码:

eda_df = full_df.groupby('users')['artist'].filter(lambda x: len(x) >= 20)

在这种情况下,用户 a 将显示最高艺术家数。

标签: pythonpandasdataframefiltergroup-by

解决方案


您可以groupby.nunique使用pd.DataFrame.transform.

此示例使用您的数据过滤用户 1 的最小唯一艺术家计数:

res = df[df.groupby('user')['artist'].transform('nunique') > 1]

print(res)

  user           artist  plays gender   age       Country
0    a  devendrabanhart    456      m  28.0  UnitedStates
2    a        cocorosie    386      m  28.0  UnitedStates

推荐阅读