如何计算每个用户的最大一致活动天数(ID)?

时间:2020-02-20 14:39:24

标签: python pandas numpy dataframe data-analysis

我在Python中有一个这样的DataFrame:

enter image description here

ID  Day      Turnover Activity
333 01-01-20 598      1
333 02-01-20 5435     1
333 03-01-20 665      1
333 04-01-20 0        0
333 05-01-20 0        0
777 01-01-20 323      1
777 02-01-20 121      1
777 03-01-20 734      1
777 04-01-20 831      1
777 05-01-20 0        0

#explanation
if Turnover > 0:
    Activity = 1
else:
    Activity = 0

但是在整个DataFrame的ID列中还有许多其他Turnover的值都为0或> 0。 所以。我想为每个1计算一致的ID的最大数量。 我该怎么办?

最诚挚的问候!

2 个答案:

答案 0 :(得分:2)

我必须添加几个额外的列才能实现您想要实现的目标。

df = df.sort_values(["ID", "Day"])
df["Timestamp"] = pd.to_datetime(df.Day).astype('int64')
df["Change"] = df.Activity.diff().fillna(1)
df["StartTimeStamp"] = df.Change * df.Timestamp
df["StartTimeStamp"] = df.StartTimeStamp.replace(0, method='ffill')
summary = df[df.StartTimeStamp > 0].groupby(["ID", "StartTimeStamp"]).Activity.count().groupby("ID").max()

答案 1 :(得分:-2)

df[["ID","Activity"]].groupby(["ID"]).sum().reset_index(name="Max Activity days")