擅长:python、mysql、java
<p>@piSquared解决方案真的很好,但我不喜欢在重新编制索引时按手挑选索引。</p>
<p>这也适用于每种下采样(浮动索引也适用),并自动选取每个范围内索引的平均值:</p>
<pre><code>df = pd.DataFrame(index = np.random.rand(20)*30, data=np.random.rand(20, 2), columns=['A', 'B'])
df.index.name = 'crazy_index'
s = (df.index.to_series() / 10).astype(int)
</code></pre>
<p>现在您可以随意选择要在每个子组中计算的函数:</p>
<pre><code># calculate std() in each group
df.groupby(s).mean().set_index( s.groupby(s).apply(lambda x: np.mean(x.index)) )
A B
crazy_index
3.667539 0.276986 0.317642
14.275074 0.248700 0.372551
25.054042 0.254860 0.297586
# calculate median() in each group
df.groupby(s).median().set_index( s.groupby(s).apply(lambda x: np.mean(x.index)) )
Out[38]:
A B
crazy_index
3.667539 0.454654 0.521649
14.275074 0.451265 0.490125
25.054042 0.489326 0.622781
</code></pre>
<p>编辑:索引中有一些错误,现在可以正常工作了。</p>