我在Python中有一个这样的DataFrame:
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
的最大数量。
我该怎么办?
最诚挚的问候!
答案 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")