首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何通过流行度图表对不同长度的路径进行平均?

如何通过流行度图表对不同长度的路径进行平均?
EN

Stack Overflow用户
提问于 2019-09-01 02:12:20
回答 1查看 16关注 0票数 0

所以基本上,我看的是一些音乐流行度排行榜的数据。所以我可以看到一首歌在排行榜上有多少周,它的位置是什么,它是哪周的位置,以及歌曲的名字和歌手。

我已经将排行榜分开,只包含在某一时刻成为排行榜第一的歌曲的条目,并希望看到每首歌到十年排行榜第一的平均“旅程”。

当然,其中一些歌曲在排行榜前100名上花费的时间更多。因此,虽然简单地平均歌曲所占的每个位置似乎很容易,但要做到这一点却并非易事。

我想过当一首歌退出前100名时,我会添加一些虚拟变量,比如101,等于任何曲目在排行榜上花费的最大周数的长度。但这似乎最终会扭曲我的数据。

我的数据看起来像这样(除了有多首曲目,当然这首歌还有更多的条目:

https://ethercalc.org/73oyih35ryu2

EN

回答 1

Stack Overflow用户

发布于 2019-09-01 03:17:50

如果我理解正确,我的解决方案如下:

首先,您可以按歌曲对数据帧进行分组,并将数字作为字符串添加到字符串中。

代码语言:javascript
复制
new_df=pd.DataFrame(df.groupby('Song')['Position'].apply(lambda x:' '.join(x.astype(str))))

它将返回如下内容:

代码语言:javascript
复制
                                   Position
Song                                       
Radioactive  93 98 45 56 45 45 45 1 4 67 89

然后我把字符串拆分为"1",我取第一个元素,再加上数字“1”。

代码语言:javascript
复制
new_df['Position']=new_df['Position'].apply(lambda x:x.split('1')[0]+'1')
print(new_df)
                           Position
Song                               
Radioactive  93 98 45 56 45 45 45 1

在那之后,我可以把它变成一个用空格拆分的列表,然后我可以取这个列表的平均值:

代码语言:javascript
复制
new_df['Position'].apply(lambda x: np.mean([int(i) for i in x.split()]))

print(new_df)

Song
Radioactive    53.5
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57740555

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档