Python在groupby分組後提取指定位置記錄

2021-08-14 14:08:53 字數 888 閱讀 4926

在進行資料分析、資料建模時,我們首先要做的就是對資料進行處理,提取我們需要的資訊。下面為大家介紹一些groupby的用法,以便能夠更加方便地進行資料處理。

我們往往在使用groupby進行資訊提取時,往往是求分組後樣本的一些統計量(max、min,var等)。如果現在我們希望取一下分組後樣本的第二條記錄,倒數第三條記錄,這個該如何操作呢?我們可以通過first、last來提取分組後第一條和最後一條樣本。但如果我們要取指定位置的樣本,就沒有現成的函式。需要我們自己去寫了。下面我就為大家介紹如何實現上面的功能。

1)資料介紹

action表共有3列:userid、actiontype和actiontime,分別代表使用者id,使用者行為型別和行為發生時間。具體格式如下圖所示:

2)分組操作

a = action.groupby('userid')

b = action.groupby('userid')['actiontime']

type(a)

type(b)

分組後我們可以看到a和b的資料型別是dataframegroupby和seriesgroupby

3)取數操作

①不同使用者第二次/倒數第二次操作時間

②不同使用者某種行為第二次/倒數第二次操作時間

ps:因為有些使用者可能只有一條記錄,直接取可能會出錯,所以我用if先做判斷。

這樣我們就可以提取分組後資料任意位置的樣本了。

在Django中使用group by

在django中怎樣使用group by語句呢?找了很多資料,都沒有看到好的,在這裡分享兩種方法給大家 首先,我們先建乙個簡單的模型。class book models.model name models.charfield u 書名 max length 255,db index true aut...

oracle在group by時某列有多個值的拼接

有如下表student 我們希望以class分組,每組的資訊平鋪,效果如下 分組首先想到的肯定是group by select from student s group by s.class 我們會發現這樣會報錯,因為name和age有多個值,這個時候我們就可以使用wm concat 方法來解決。s...

python 當groupby遇到匿名函式

開發過程中遇到這樣一種場景,dataframe按一列groupby之後,要對多列進行不同的操作。例如 in 25 df out 25 name price size 0 a 100 m 1 a 90 s 2 b 100 m 3 b 110 m 4 b 120 l 5 c 80 s 6 c 70 s ...