python - 保持数据框中多列重复项的最低值
问题描述
我有以下数据框:
import pandas as pd
data = dict(name=['a', 'a', 'a', 'b', 'b', 'b', 'c', 'c'],
objective=[20.0, 20.0, 25.0, 40.0, 40.5, 41.0, 60.0, 60.0],
price=[0.5, 1.0, 1.5, 1.0, 1.2, 1.4, 0.5, 1.0])
df = pd.DataFrame(data, columns=data.keys())
然后我可以找到所有这些的独特组合,如下所示:
df.groupby(['name','objective', 'price']).size()
看起来像这样:
name objective price
a 20.0 0.5 1
1.0 1
25.0 1.5 1
b 40.0 1.0 1
40.5 1.2 1
41.0 1.4 1
c 60.0 0.5 1
1.0 1
price
当给定name
and有多个值时objective
,我只想保留较低的值price
,即
name objective price
a 20.0 0.5 1
25.0 1.5 1
b 40.0 1.0 1
40.5 1.2 1
41.0 1.4 1
c 60.0 0.5 1
请问我怎样才能做到这一点?
解决方案
你可以做另一个groupby
和first
:
(df.groupby(['name','objective', 'price']).size()
.reset_index()
.groupby(['name', 'objective'])
.first()
)
输出:
price 0
name objective
a 20.0 0.5 1
25.0 1.5 1
b 40.0 1.0 1
40.5 1.2 1
41.0 1.4 1
c 60.0 0.5 1
推荐阅读
- javascript - 如何从对象数组的多个键中获取所有值?
- react-native - React Native - 带有 urlencoded 参数的 Axios POST
- html - RouterLink 在角度 6 中无法正常工作
- c# - 我可以获得在 UWP 应用中接收 Google Drive API 推送通知所需的简化步骤列表吗?
- java - 不支持使用 JDK 版本 `11.0.1` 构建。请安装JDK版本`1.8.0`
- sql - Stack Exchange 数据资源管理器上的 SQL - 定义值
- java - Java中的打印列表
- javascript - PWA 与 Web 共享本地存储
- c# - 如何获取文本字体文件的标题(不是名称)?(TTF 和 OTF)
- java - 为 RecyclerView 创建适配器后未选中的分配警告