繁体   English   中英

熊猫在 groupby 后获得累积总和

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM