Как рассчитать максимальное количество последовательных дней активности для каждого пользователя (ID)? - PullRequest
0 голосов
/ 20 февраля 2020

У меня есть DataFrame в Python, например:

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

Но есть много других ID с 0 или> 0 значений в столбце Turnover в полном кадре данных. Так. Я хотел бы посчитать максимальное количество последовательных 1 для каждого ID. Как я могу это сделать, пожалуйста?

С уважением!

Ответы [ 2 ]

1 голос
/ 20 февраля 2020

Мне пришлось добавить пару дополнительных столбцов, чтобы достичь того, чего вы хотели достичь.

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()
0 голосов
/ 20 февраля 2020
df[["ID","Activity"]].groupby(["ID"]).sum().reset_index(name="Max Activity days")
...