python - groupby 并根据另一列的值保留一列的信息

标签 python pandas dataframe

我有以下 DataFrame 由列 id、brand 和 count 组成

Id  brand  count
1   Audi   3 
2   BWM    5 
2   FORD   3
3   AUDI   7
4   BMW    2
5   Audi   4
5   FORD   3 

我想对 id 进行分组,并且只保留每个 id 与具有最高计数的品牌。
所以最后我想有以下几点:
id  brand
1   AUDI
2   BMW
3   AUDI
4   BMW
5   AUDI

我有这样的事情,但这显然不起作用。那么实现这一目标的正确函数或语法是什么?谢谢!
data.groupby('id')['brand'].where(max('count'))

最佳答案

IIUC 使用 groupby.idxmax loc :

df.loc[df.groupby('Id')['count'].idxmax()]

[出去]
   Id brand  count
0   1  Audi      3
1   2   BWM      5
3   3  AUDI      7
4   4   BMW      2
5   5  Audi      4

关于python - groupby 并根据另一列的值保留一列的信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60601337/

相关文章:

python - SQLAlchemy、Postgres、与 Alchemy 模型的加入变得不同

pandas - 将列表中的字典转换为 Pandas 中的行

python - 如何从 pandas DF 获取 `field_name:field_type` 的字典

python - 使用 pyodbc 从 SQL Server 中提取的数据行是 "unhashable type"

python - 如何迭代 df 中的列并将值与前一列进行比较并在 Python 中执行操作

python - 如何使用 pandas 间隔来查找值,以填充另一个数据框

python - 如何根据 Pandas 中具有特定值的列将多行合并为一行

python - 如何优化 pandas 数据框的分块?

python - Raspberry Pi crontab 在启动时启动 py 脚本 -> 记录 : error mysql 2002 (can't connect to local server)

python - 在 Python 中计算时间跨度