我有这个数据框:基本上每一行都是一天由一位客户执行的交易。 同一位客户在同一天和不同日期进行了多次交易。我想获得一列以前访问的客户数。
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)
,但它给出了每笔交易的累计金额。 如何每天获得相同的价值,但第二天进行迭代。
答案 0 :(得分:1)
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
答案 1 :(得分:0)
另一种分类方法:
df['visit'] = df.groupby('id')['date'].transform(lambda x: pd.Categorical(x).codes)