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)
并使用一个 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)
使用idxmin或idxmax:
编辑至.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)