返回数据框底部具有最大值/最小值的行(python / pandas)

Bea*_*ama 4 python csv max min pandas

我想编写一个函数,该函数可以查看数据帧,在指定的列中找到最大值或最小值,然后返回整个数据帧,并在底部包含包含最大值或最小值的行。

我这样做是为了使仅具有最大值或最小值的行被返回。

def findAggregate(df, transType, columnName=None):

    if transType == 'max1Column':
        return df[df[columnName] == df[columnName].max()]

    elif transType == 'min1Column':
        return df[df[columnName] == df[columnName].min()]
Run Code Online (Sandbox Code Playgroud)

给定下面的数据框,我想检查col2的MIN值

原始数据框:

col1     col2     col3
blue     2        dog
orange   18       cat
black    6        fish
Run Code Online (Sandbox Code Playgroud)

预期产量:

col1     col2     col3
blue     2        dog
orange   18       cat
black    6        fish
blue     2        dog
Run Code Online (Sandbox Code Playgroud)

实际输出:

col1     col2     col3
blue     2        dog
Run Code Online (Sandbox Code Playgroud)

piR*_*red 6

关注指标值

并使用一个 loc

i = df.col2.idxmin()
df.loc[[*df.index] + [i]]

     col1  col2  col3
0    blue     2   dog
1  orange    18   cat
2   black     6  fish
0    blue     2   dog
Run Code Online (Sandbox Code Playgroud)

相同的想法,但与Numpy和 iloc

i = np.arange(len(df))
a = df.col2.to_numpy().argmin()
df.iloc[np.append(i, a)]

     col1  col2  col3
0    blue     2   dog
1  orange    18   cat
2   black     6  fish
0    blue     2   dog
Run Code Online (Sandbox Code Playgroud)


Erf*_*fan 5

使用idxminidxmax

编辑至.locAndyL 评论后

df.append(df.loc[df['col2'].idxmin()], ignore_index=True)

     col1  col2  col3
0    blue     2   dog
1  orange    18   cat
2   black     6  fish
3    blue     2   dog
Run Code Online (Sandbox Code Playgroud)

  • `idxmax` 和 `idxmin` 返回索引,而不是整数索引。该问题未指定索引。因此,如果索引不是“rangeindex”,则会失败。我认为像其他答案一样使用“loc”更安全。 (3认同)