[英]Pandas get cumulative sum after groupby
我有这个数据框:基本上每一行都是一个客户在一天内进行的交易。 同一客户在同一天和不同日期进行了多次交易。 我想获得一个客户以前访问次数的列。
id date purchase
id1 date1 $10
id1 date1 $50
id1 date2 $30
id2 date1 $10
id2 date1 $10
id3 date3 $10
添加访问列后:
id date purchase visit
id1 date1 $10 0
id1 date1 $50 0
id1 date2 $30 1
id2 date1 $10 0
id2 date2 $10 1
id2 date3 $10 2
我试着做
df.visits = 1
df.visits = df.groupby([id, date], as_index=False)[visits].transform(cumsum)
但它给出了每笔交易的累计金额。 如何每天获得相同的价值但在第二天迭代.. ??
IIUC,你需要:
df['visit']=df.groupby('id')['date'].transform(lambda x: pd.factorize(x)[0])
print(df)
id date purchase visit
0 id1 date1 $10 0
1 id1 date1 $50 0
2 id1 date2 $30 1
3 id2 date1 $10 0
4 id2 date2 $10 1
5 id2 date3 $10 2
分类的另一种方法:
df['visit'] = df.groupby('id')['date'].transform(lambda x: pd.Categorical(x).codes)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.