Pandas multiindex dataframe - 从 multiindex 中的一个索引中选择最大值
Pandas multiindex dataframe - Selecting max from one index within multiindex
我有一个包含 Year 和 Month 的多索引的数据框,如下所示
| |Value
Year |Month|
| 1 | 3
1992 | 2 | 5
| 3 | 8
| ... | ...
1993 | 1 | 2
| ... | ...
我正在尝试 select 每年的最大值并将其放入这样的 DF 中:
| Max
Year |
1992 | 5
1993 | 2
| ...
关于多索引的信息不多,我应该简单地做一个分组并应用或类似的东西使它更简单吗?
完全正确:
df.groupby(level=0).apply(max)
在我的样本中 DataFrame
:
0
Caps Lower
A a 0 0.246490
1 -1.265711
2 -0.477415
3 -0.355812
4 -0.724521
b 0 -0.409198
1 -0.062552
2 -0.731789
3 1.131616
4 0.085248
B a 0 0.193948
1 2.010710
2 0.289300
3 0.305373
4 1.376965
b 0 0.210522
1 1.431279
2 -0.247171
3 0.899074
4 0.639926
结果:
0
Caps
A 1.131616
B 2.010710
这就是我创建 DataFrame
的方式:
df = pd.DataFrame(np.random.randn(5,4), columns = l)
df.columns = pd.MultiIndex.from_tuples(df.columns, names=['Caps','Lower'])
df = pd.DataFrame(df.unstack())
更简单的解决方案是 max
:
#bernie's sample data
df = df.max(level=0)
print (df)
0
Caps
A 1.131616
B 2.010710
我有一个包含 Year 和 Month 的多索引的数据框,如下所示
| |Value
Year |Month|
| 1 | 3
1992 | 2 | 5
| 3 | 8
| ... | ...
1993 | 1 | 2
| ... | ...
我正在尝试 select 每年的最大值并将其放入这样的 DF 中:
| Max
Year |
1992 | 5
1993 | 2
| ...
关于多索引的信息不多,我应该简单地做一个分组并应用或类似的东西使它更简单吗?
完全正确:
df.groupby(level=0).apply(max)
在我的样本中 DataFrame
:
0 Caps Lower A a 0 0.246490 1 -1.265711 2 -0.477415 3 -0.355812 4 -0.724521 b 0 -0.409198 1 -0.062552 2 -0.731789 3 1.131616 4 0.085248 B a 0 0.193948 1 2.010710 2 0.289300 3 0.305373 4 1.376965 b 0 0.210522 1 1.431279 2 -0.247171 3 0.899074 4 0.639926
结果:
0 Caps A 1.131616 B 2.010710
这就是我创建 DataFrame
的方式:
df = pd.DataFrame(np.random.randn(5,4), columns = l)
df.columns = pd.MultiIndex.from_tuples(df.columns, names=['Caps','Lower'])
df = pd.DataFrame(df.unstack())
更简单的解决方案是 max
:
#bernie's sample data
df = df.max(level=0)
print (df)
0
Caps
A 1.131616
B 2.010710