pandas数据帧:按另一列分组后得到一列的最大值

2024-10-03 09:17:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我试着为A的每一个得到B的最大值。C和D都在那里,因为我的数据集不仅仅是我想要排序和得到最大值的两列。你知道吗

import pandas
import numpy

df = pandas.DataFrame({'A': [10, 10, 20, 20, 30, 20, 10, 20],
            'B': [1001, 1002, 2002, 2003, 3001, 2003, 1002, 2003],
            'C': numpy.random.randn(8),
            'D': numpy.random.randn(8)})

像这样:

df[['A', 'B']].somepandas(magic)

期望的结果是:

   B
A        
10 1002
20 2003
30 3001

但到目前为止,我只知道在不分组的情况下获得每列的最大值:

df[['A', 'B']].max(axis=0)

A      30
B    3001
dtype: int64

有什么想法都可以


Tags: 数据importnumpydataframepandasdf排序magic
1条回答
网友
1楼 · 发布于 2024-10-03 09:17:16

您需要groupbyA'列,然后选择“B”列并对该列调用max()

In [42]:

df.groupby('A')['B'].max()
Out[42]:
A
10    1002
20    2003
30    3001
Name: B, dtype: int64

您可以一次在不同的列上执行多个函数,请参见文档:http://pandas.pydata.org/pandas-docs/stable/groupby.html#aggregation

相关问题 更多 >