簡體   English   中英

Pandas:使用 groupby 和 nunique 考慮時間

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM