给定一个熊猫数据帧df
,我可以做df.groupby('Age').apply(lambda x: x['ReadingAbility'].mean())
,以获得每个年龄段的平均阅读能力。你知道吗
现在假设我想要所有年龄段的平均阅读能力,除了age=k
我能做到:
mu_other_ages = {}
for age in df['Age'].unique():
mu_other_ages[age] = df[df['Age'] != age]['ReadingAbility'].mean()
这与groupby+apply正好相反。
有什么捷径可以更有效地达到同样的结果吗?你知道吗
请参见以下示例:
In [52]: d = pd.DataFrame([[1,10], [2,4],[1, 9], [2,3]], columns=['Age', 'ReadingAbility'])
In [53]:
In [53]: d
Out[53]:
Age ReadingAbility
0 1 10
1 2 4
2 1 9
3 2 3
In [54]: d.groupby('Age').apply(lambda x: x['ReadingAbility'].mean())
Out[54]:
Age
1 9.5
2 3.5
dtype: float64
在这种情况下,只有两个不同的年龄值,其结果应该颠倒为:2=9.5
和1=3.5
,而对于更多的阶级,Age=k
的值应该是:df[df['Age'] != k]['ReadingAbility'].mean()
为了澄清这个例子的预期结果是:2=9.5 and 1=3.5
得到每组的平均值。您可以通过添加一个查询来过滤,比如
Age = 1
或者
或者,正如Merkle Daamgard所指出的,首先过滤掉不需要的值,然后执行
groupby
和mean
。你知道吗有关详细信息,请参见^{} 。你知道吗
您需要:
另一个非常快速的解决方案是为每个组聚合} 和减去。最后划分:
sum
和size
,然后用两列的^{时间安排:
我想你可以接受
返回:
相关问题 更多 >
编程相关推荐