如何根据条件在数据透视表中获取价值

问题描述 投票:2回答:1

给定一个数据框

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'])

enter image description here

和数据透视表

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

enter image description here

我想将每个A值(即4和1)的对应C值都设为最高B值。

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

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

谢谢

python pandas
1个回答
1
投票

无需在这里枢纽。您可以使用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
© www.soinside.com 2019 - 2024. All rights reserved.