我在pandas中使用groupby
来计算数据中pandas中的一些聚合统计信息,其中数据框中的列使用分层索引进行组织。
对于计算的统计信息,我想在最后返回表格表格,其中组被重新转换为具有组值的列,例如,像:
index = pd.MultiIndex.from_tuples([('A', 'a'), ('B', 'b')])
df = pd.DataFrame(np.random.randn(8,2), columns=index)
导致例如这个数据框
A B
a b
0 0.511157 0.334748
1 0.031113 -0.477456
2 0.288080 -0.258238
3 0.138467 -0.955547
4 -0.087873 0.017494
5 -0.667393 1.190039
6 -0.068245 -1.282864
7 -0.996982 0.589667
现在我使用groupby计算统计数据并重置索引以重新创建平面数据框:
df.groupby([('A','a')]).mean().reset_index()
(A, a) B
b
0 -0.996982 0.589667
1 -0.667393 1.190039
2 -0.087873 0.017494
3 -0.068245 -1.282864
4 0.031113 -0.477456
5 0.138467 -0.955547
6 0.288080 -0.258238
7 0.511157 0.334748
我怎样才能实现('A', 'a')
再次成为多索引的一部分,希望以自动方式?或者另有说明:有没有办法在groupby操作期间保留分层列结构。
答案 0 :(得分:4)
对我而言,将参数 Task.Run(() =>
{
//DoSomeWork();
})
.ContinueWith((t) =>
{
// Return when done.
_regionManager.RequestNavigate("MyTarget", nameof(SomePage));
})
.ContinueWith((t) =>
{
_regionManager.RequestNavigate("MyTarget", nameof(SomeErrorPage));
}, TaskContinuationOptions.OnlyOnFaulted);
添加到groupby
:
as_index=False
答案 1 :(得分:2)
最简单的方法是重新分配原始列:
In [182]:
df1 = df.groupby([('A','a')]).mean().reset_index()
df1.columns = df.columns
df1
Out[182]:
A B
a b
0 -0.857465 -0.761948
1 -0.263677 0.538251
2 0.067710 -1.038906
3 0.345584 -0.425514
4 0.478200 0.119345
5 0.639305 0.047526
6 1.528260 1.956677
7 3.114834 -0.532462