我正在尝试计算2009年至2018年某个工作日在社交媒体上发布帖子的次数的加权平均值。
这是我的代码:
weight = fb_posts2[fb_posts2['title']=='status'].groupby('year',as_index=False).apply(lambda x: (x.count())/x.sum())
我想做的是按年份和工作日分组,计算一年中每个工作日发生的时间,然后将其除以每年的职位总数。想法是返回一个数据框,该数据框的加权平均值为2009年至2018年之间每个工作日发生了多少次。
答案 0 :(得分:1)
将.value_counts()
与normalize参数一起使用,仅按年份分组。
import pandas as pd
import numpy as np
np.random.seed(123)
df = pd.DataFrame({'year': np.random.choice([2010, 2011], 1000),
'weekday': np.random.choice(list('abcdefg'), 1000),
'val': np.random.normal(1, 10, 1000)})
df.groupby('year').weekday.value_counts(normalize=True)
year weekday
2010 d 0.152083
f 0.147917
g 0.147917
c 0.143750
e 0.139583
b 0.137500
a 0.131250
2011 d 0.182692
a 0.163462
e 0.153846
b 0.148077
c 0.128846
f 0.111538
g 0.111538
Name: weekday, dtype: float64