0

我有一个如下所示的数据框:

    item    width   length
0   X        4        1
1   F       15        4
2   R        6        3
3   X        3        10
4   F       10        19

对于每个项目,我想列出最长项目的宽度和长度。我尝试使用df.groupby("item").max(),但它给了我以下错误的数据框:

  item  width       length
    F        15       19
    R        6        3
    X        4        10        

我期望的是以下数据框:

  item    width     length
    F        10       19
    R        6        3
    X        3        10
4

1 回答 1

0

给定(注意 - 第 0 行与您的示例不同):

>>> df=pd.DataFrame({'item':['X','F','R','X','F'], 'width':[60,15,6,3,10],'length':[1,4,3,10,19]})
>>> df
  item  width  length
0    X     60       1
1    F     15       4
2    R      6       3
3    X      3      10
4    F     10      19

有点不清楚您是仅按最大长度还是按面积(宽度 * 长度)寻找最大值。无论哪种方式,方法都是相似的。

如果您想要最大长度,请执行以下操作:

>>> df[df.groupby(['item'])['length'].transform(max)==df['length']]
  item  width  length
2    R      6       3
3    X      3      10
4    F     10      19

如果您真的要求 amax是两列的乘积,则添加area为宽度 * 长度的乘积:

>>> df['area']=df['width']*df['length']

现在您可以分组并使用max以下值area

>>> df[df.groupby(['item'])['area'].transform(max)==df['area']]
  item  width  length  area
0    X     60       1    60
2    R      6       3    18
4    F     10      19   190
于 2021-02-06T20:05:39.800 回答