【发布时间】:2023-01-30 22:03:58
【问题描述】:
我有一个分层组织的数据框。考虑一下:
baseval
indexlevel0 indexlevel1 indexlevel2
L0-0 L1-0 L2-0 1
L2-1 1
L2-2 20
L1-1 L2-0 2
L2-1 2
L2-2 10
我需要做的是创建一个新的数据框,通过将相应的 (indexlevel2) 替换为单个值来折叠中间级别 (indexlevel1),该值是曾经包含在 indexlevel1 中的两个级别中的最小值。
可能更容易说明我的意思 - 上述示例的解决方案是(即保留索引级别 0 和 2,以及每个索引级别 2 的最小基值):
minbylevel
indexlevel0 indexlevel2
L0-0 L2-0 1
L2-1 1
L2-2 10
我什至不知道从哪里开始。所有聚合等的例子都是自下而上的。
这是一些用于创建起点数据框的测试代码。
import pandas as pd
from io import StringIO
testdata = """
indexlevel0,indexlevel1,indexlevel2,baseval
L0-0,L1-0,L2-0,1
L0-0,L1-0,L2-1,1
L0-0,L1-0,L2-2,20
L0-0,L1-1,L2-0,2
L0-0,L1-1,L2-1,2
L0-0,L1-1,L2-2,10
"""
testinput = StringIO(testdata)
data_df = pd.read_csv(testinput, index_col=[0,1,2], header=[0]).sort_index()
print(data_df)
【问题讨论】:
标签: python pandas multi-index