在pandas数据帧中,可以使用groupby
方法和idxmax
函数来选择多索引中的列的最大值。
首先,使用groupby
方法按照索引级别进行分组。然后,使用idxmax
函数找到每个组中具有最大值的列的索引。最后,使用loc
方法根据这些索引选择相应的列。
以下是具体的步骤:
import pandas as pd
data = {'A': [1, 2, 3, 4, 5],
'B': [6, 7, 8, 9, 10],
'C': [11, 12, 13, 14, 15]}
index = pd.MultiIndex.from_tuples([('Group1', 'Subgroup1'), ('Group1', 'Subgroup2'), ('Group2', 'Subgroup1'), ('Group2', 'Subgroup2'), ('Group3', 'Subgroup1')])
df = pd.DataFrame(data, index=index)
groupby
方法按照第一级索引进行分组,并使用idxmax
函数找到每个组中具有最大值的列的索引:max_cols = df.groupby(level=0).idxmax()
loc
方法根据这些索引选择相应的列:result = df.loc[max_cols]
完整的代码如下:
import pandas as pd
data = {'A': [1, 2, 3, 4, 5],
'B': [6, 7, 8, 9, 10],
'C': [11, 12, 13, 14, 15]}
index = pd.MultiIndex.from_tuples([('Group1', 'Subgroup1'), ('Group1', 'Subgroup2'), ('Group2', 'Subgroup1'), ('Group2', 'Subgroup2'), ('Group3', 'Subgroup1')])
df = pd.DataFrame(data, index=index)
max_cols = df.groupby(level=0).idxmax()
result = df.loc[max_cols]
print(result)
这将输出具有最大值的列的子数据帧。
关于pandas数据帧和多索引的更多信息,可以参考腾讯云的相关产品和文档:
领取专属 10元无门槛券
手把手带您无忧上云