[英]Pandas: using groupby and nunique taking time into account
我有一個 dataframe 這種形式:
A B time
1 2 2019-01-03
1 3 2018-04-05
1 4 2020-01-01
1 4 2020-02-02
其中 A 和 B 包含一些 integer 標識符。 我想測量每個 A 與之交互的不同標識符的數量。 為此,我通常只是簡單地做
df.groupby('A')['B'].nunique()
我現在必須做一件稍微不同的事情:每個標識符都有一個分配的日期(每個標識符都不同),它將其交互分為兩部分:在該日期之前發生的那些,以及在該日期之后發生的那些。 之前完成的相同操作(計算與 交互的唯一 B 的數量)需要分別為兩個部分完成。
例如,如果 A=1 的日期是 2018-07-01,則 output 將是
A before after
1 1 2
在真實數據中,A 包含數百萬個不同的標識符,每個標識符都有其唯一的日期。
編輯為了更清楚,我在 df. 我想計算日期之前和之后每個 A 與之交互的 B 的不同值的數量
我會將A
轉換為日期,將它們與df['time']
進行比較,然后再進行groupby().value_counts()
:
(df['A'].map(date_dict)
.gt(df['time'])
.groupby(df['A'])
.value_counts()
.unstack()
.rename({False:'after',True:'before'}, axis=1)
)
Output:
after before
A
1 2 1
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.