我有以下数据框:
df = pd.DataFrame({'Value': [0, 1, 2,3, 4,5,6,7,8,9],'Name': ['John', 'Jim', 'John','Jim', 'John','Jim','Jim','John','Jim','John']})
df
Value Name
0 0 John
1 1 Jim
2 2 John
3 3 Jim
4 4 John
5 5 Jim
6 6 Jim
7 7 John
8 8 Jim
9 9 John
我想通过Name
选择排名前n
的项目,并从Value
列中计算平均值。
我尝试了以下方法:
df['Top2Mean'] = df.groupby(['Name'])['Value'].nlargest(2).transform('mean')
但是遇到了以下错误:
ValueError: 转换无法生成聚合结果
我的预期结果是在 John
后面加上值为 8
,在 Jim
后面加上值为 7
的新列,该列名为Top2Mean
。
提前感谢!
df['Top2Mean'] = df['Name'].map(top2)
应该如何调整? - SOKtop2 = df.groupby(['Name','City'])['Value'].nlargest(2).mean(level=0)
,我该如何映射df['Top2Mean']
以包括City
?@Shubham Sharma - SOK