Pandas 多索引数据框 - 从多索引中的一个索引中选择最大值
Posted
技术标签:
【中文标题】Pandas 多索引数据框 - 从多索引中的一个索引中选择最大值【英文标题】:Pandas multiindex dataframe - Selecting max from one index within multiindex 【发布时间】:2017-08-27 01:26:57 【问题描述】:我有一个数据框,其中包含多个年份和月份索引,如下所示
| |Value
Year |Month|
| 1 | 3
1992 | 2 | 5
| 3 | 8
| ... | ...
1993 | 1 | 2
| ... | ...
我正在尝试选择每年的最大值并将其放入 DF 中,如下所示:
| Max
Year |
1992 | 5
1993 | 2
| ...
关于多索引的信息不多,我应该简单地做一个 group by 和 apply 或类似的东西让它更简单吗?
【问题讨论】:
请修正您的示例:1992 年的最大值不可能是 5,因为在 Month=3 中它是 8。您在寻找 max 还是 idxmax(给出最大最大值的月份?) 【参考方案1】:完全正确:
df.groupby(level=0).apply(max)
在我的示例中DataFrame
:
结果:
0 帽子 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())
【讨论】:
有人知道如何使这个答案末尾的示例数据起作用吗?columns = l
对我提出了一个例外,因为 l
没有定义。我试图推断它可能是什么,但没有运气。【参考方案2】:
更简单的解决方案是仅限max
:
#bernie's sample data
df = df.max(level=0)
print (df)
0
Caps
A 1.131616
B 2.010710
【讨论】:
以上是关于Pandas 多索引数据框 - 从多索引中的一个索引中选择最大值的主要内容,如果未能解决你的问题,请参考以下文章