python - 如何根据条件在数据透视表中获取值
问题描述
给定一个数据框
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 中都是唯一的。
谢谢你
解决方案
无需在这里转身。您可以使用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
推荐阅读
- json - 如何使用 jq 在特定字段上加入 JSON 对象?
- android - 更改字段文本的 PDFbox 字体
- android - 如何在 react-native 中添加 box-shadow?
- python - tkinter 标签中表格结构的 Tkinter 问题
- node.js - MongoDB - 批量查找和 updateOne 无法按预期工作
- javascript - 使用 EJS 的骰子滚轮
- php - 如何在POST方法的下一个php页面上接收从标题(位置:.....)发送的数据?
- python - 使用 Python 仅从 txt 文件中提取所需的列?
- ios - 如何将 AppiumDriver 焦点更改为出现在不同图层上的下拉菜单?iOS
- javascript - JQuery在页面上输出“未定义”