pandas分組排序 如何獲取第二大的資料

2022-09-25 22:57:17 字數 1642 閱讀 2847

python用來做資料分析很方便,網上很多關於找資料中第二大的方法,但是大多數都是關於sql的,於是我挑戰一下用python來做這件事(主要是sql_

在實際工作中應該從資料庫中匯入資料,如何從資料庫匯出資料,我之後會補充。

import pandas as pd

df = pd.dataframe([,,

,,,,

,,,,

,,

])def fun(df):

# english資料去重

sort_set = set(df["english"].values.tolist())

if len(sort_set)<=1:

# 資料量小於等於1,無法取到第二大的資料

return none

else:

# 取english中第二大的值

sort_value = sorted(sort_set,reverse=true)[1]

temp_df = df[df["english"]==sort_value]

return temp_df

df = df.groupby(by=["class"]).apply(fun).reset_index(drop=true)

print(df)

程式設計客棧結果如下:

class name english

0 1 bb 110.0

1 1 cc 110.0

2 1 dd 110.0

3 2 gg 130.0

4 2 hh 130.0

當然這還可以改為取最大、取最小、取第三大、等等......

補充:pandaswww.cppcns.com 按某一列a排序,按b和c兩列分組,選擇分組後a列值最大的行

pandas 按某一列a排序,按b和c兩列分組,選擇分組後a列值最大的行

按 u程式設計客棧pdatetime 列倒序排序,按 b 和 c 兩列分組,分組後選擇最後更新的時間的那一行,並將結果加上新索引。

import pandas as pd

data = pd.read_csv('test.csv')

df = pd.dataframe(data)

df = df.sort_values('updatetime', ascending=false).groupby(['b','c']).first().reset_index()

first() 函式代表選擇第一行,如果要選取多行,可以使用 head() 函式: head(5)表示選擇前五行。

import pandas as pd

data = pd.read_csv('test.csv',header = 0)

df = pd.dataframe(data)

# 按日期分組,分組後對 value 列從大到小排序,取每組前十行

df = df.groupby('date', group_keys=false).apply(lambda x: x.sort_values('value', ascending=false)).groupby('date').head(10).reset_index()

在不能直接使用sort_values() 函式時,使用 apply() 函式。

本文標題: pandas分組排序 如何獲取第二大的資料

本文位址:

pandas排序以及獲取序號

參考 如果不考慮序號問題,要直接排序則使用pandas sort values函式 df.sort values by 排序字段 axis 0,ascending true,inplace false,na position last 引數 說明 by 指定列名 axis 0或 index 或索引值...

Oracle 分組排序函式使用,獲取分組第一條資料

oracle 常用 group by 來進行分組查詢,但這裡使用row number over 函式,語法 row number over partition by 欄位1 order by 欄位2 欄位1表示根據此欄位分組,欄位2表示排序,此函式計算的值就表示每組內部排序後的順序編號。with t...

SqlServer分組排序取出每組順序第一的資料

首先建立測試表並插入資料,建立測試表 匯率庫表 create table exchangerate moneytype varchar 100 幣種 exchangerate varchar 100 匯率 adddate datetime 新增時間 插入測試資料 insert into exchan...