标题可能令人困惑:我有一个数据框,显示一周内的 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(),但是这个实例会将这个计数应用到我的整个数据帧,并在我可以去重复之前过滤掉我的所有 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
答案 0 :(得分:1)
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"})