首页 > 解决方案 > 如何根据条件在数据透视表中获取值

问题描述

给定一个数据框

import pandas as pd
data = [[1, 10, -1], [1,  7, -2], [1, 3, 14], 
    [2, 11,  1], [2, -2,  2], [1, 13, 4]]
DfObj = pd.DataFrame (data, columns = ['A', 'B', 'C'])

在此处输入图像描述

和数据透视表

pivot = DfObj.pivot_table (index=['A', 'B'])

在此处输入图像描述

我想将每个 A 值的最高 B 值对应的 C 值,即 4 和 1。

4是类别A=1中最高B值对应的C值。

我假设 B 值在每个类别 A 中都是唯一的。

谢谢你

标签: pythonpandas

解决方案


无需在这里转身。您可以使用sort_valuesgroupby.tail

DfObj.sort_values(['A', 'B']).groupby('A').C.tail(1)

5    4
3    1
Name: C, dtype: int64

或使用last

DfObj.sort_values(['A', 'B']).groupby('A').C.last()

另一种方法可能是使用GroupBy.idxmax

DfObj.loc[DfObj.groupby('A').B.idxmax().values, 'C']

5    4
3    1
Name: C, dtype: int64

推荐阅读