Rac*_*hel 4 mean python-3.x pandas difference pandas-groupby
让我们假设我计算在一段时间内有多少桔子(Orange)和苹果(Apple)人(id).我也知道他们是年轻还是年老(group).熊猫数据框可能如下所示:
df = pd.DataFrame({'id' : ['1','2','3','7'],
'group' : ['Young', 'Young', 'Old', 'Old'],
'Apple' : [7,2,5,4],
'Orange' : [3,6,4,4],
})
Run Code Online (Sandbox Code Playgroud)
我们可以轻松计算使用的方法groupby().E. g:
df.Apple.groupby(df.group).mean()
Run Code Online (Sandbox Code Playgroud)
输出
Old 4.5
Young 4.5
Run Code Online (Sandbox Code Playgroud)
但是,让我们说,我想知道消费的苹果和橙子的数量与每个人的群体平均数有多大差异?
也就是说,输出应该是
df = pd.DataFrame({'id' : ['1','2','3','7'],
'group' : ['Young', 'Young', 'Old', 'Old'],
'Apple' : [7,2,5,4],
'Orange' : [3,6,4,4],
'Apple Difference' : [2.5, -2.5, 0.5, -0.5],
})
Run Code Online (Sandbox Code Playgroud)
有没有办法用pandas/numpy做到这一点?对不起摇滚乐问题Best/R.
你需要transform为mean具有相同length的df并用.减去sub:
print (df.groupby('group')['Apple'].transform('mean'))
0 4.5
1 4.5
2 4.5
3 4.5
Name: Apple, dtype: float64
df = pd.DataFrame({'id' : ['1','2','3','7'],
'group' : ['Young', 'Young', 'Old', 'Old'],
'Apple' : [7,2,5,4],
'Orange' : [3,6,4,4],
})
df['Apple Difference'] = df['Apple'].sub(df.groupby('group')['Apple'].transform('mean'))
print (df)
Apple Orange group id Apple Difference
0 7 3 Young 1 2.5
1 2 6 Young 2 -2.5
2 5 4 Old 3 0.5
3 4 4 Old 7 -0.5
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1116 次 |
| 最近记录: |