[英]Pandas group by unique ID and Distinct date per unique ID
標題可能令人困惑:我有一個 dataframe,它在一周內顯示 user_id 登錄。 我的目標是顯示去重 ID 以及每個員工去重的日期,以便計算用戶在一周內唯一登錄的 # 天。 因此,我一直在嘗試執行一項規則,以確保我每天只能獲得每個員工的不同登錄。
print(tempdf)
ID date
10301 1/4/2021
10301 1/4/2021
10301 1/5/2021
10301 1/6/2021
10301 1/7/2021
10301 1/8/2021
10302 1/4/2021
10302 1/5/2021
10302 1/6/2021
10302 1/7/2021
10302 1/8/2021
我唯一能想到的就是嘗試傳遞某種形式的.nunique(),但這個實例會將該計數應用於我的整個 dataframe,並在我可以對它們進行重復數據刪除之前過濾掉我的所有 ID。
tempdf1=tempdf.groupby(['date'], as_index = False).nunique()
tempdf1['# days signed in for week'] = tempdf1.groupby('ID')['ID'].transform('count')
df=tempdf1.drop_duplicates(['ID']).copy()
這是我想要的結果:
print(df)
ID date # days signed in for week
10301 1/4/2021 5
10302 1/4/2021 5
count()
的簡單使用df = pd.read_csv(io.StringIO("""ID date # days signed in for week
10301 1/4/2021 6
10301 1/4/2021 6
10301 1/5/2021 6
10301 1/6/2021 6
10301 1/7/2021 6
10301 1/8/2021 6
10302 1/4/2021 5
10302 1/5/2021 5
10302 1/6/2021 5
10302 1/7/2021 5
10302 1/8/2021 5"""), sep="\s\s+", engine="python")
df.date = pd.to_datetime(df.date)
df["weekStart"] = df['date'] - pd.to_timedelta(df['date'].dt.dayofweek, unit='d')
df.groupby(["ID","weekStart"])["date"].count().reset_index()\
.rename(columns={"weekStart":"date","date":"# days signed in for week"})
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.