我试图为某些用户群计算加权平均值,但似乎无法获取输出并用它形成一个新的列。你知道吗
我尝试了groupby和apply函数,但似乎无法将其转换回新的列
df = pd.DataFrame('cohort_size': [10,15,20,25,20,15],
'retention' : [0.3,0.2,0.4,0.5,0.6,0.5],
'nth_interval' : [1,1,1,7,7,7])
df.groupby('nth_interval').apply(lambda x: np.average(x['retention'], weights=x['cohort_size']))
我得到的输出是一个序列,但我真正想要的是取这些单独的加权平均值,并将它们作为数据帧中的一个新列放回去,其中每个列值对应于第n个间隔
IIUC,你在找这个吗?你知道吗
输出:
您可以使用transform保存合并。对于大数据,您通常希望防止这种情况发生。你知道吗
至于loc是怎么工作的。loc是一种获取数据子集的方法。您可以给它一个标签、索引或布尔索引。第一个参数用于行,第二个参数用于列。在这里,我使用保留序列组的索引来获得相应的队列大小。基本上我是在给
df.loc[[0, 1, 2], 'cohort_size']
和df.loc[[3, 4, 5], 'cohort_size']
打电话。你知道吗您可以执行合并:
或地图:
输出:
也可以手动计算:
相关问题 更多 >
编程相关推荐