给定一个数据框
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值(即4和1)的对应C值都设为最高B值。
4是对应于类别A = 1中最高B值的C值。
我假设B值在每个类别A中都是唯一的。
谢谢
无需在这里枢纽。您可以使用sort_values
和groupby.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