PythonPandas计算funn

2024-03-29 15:31:31 发布

您现在位置:Python中文网/ 问答频道 /正文

使用python pandas数据帧df:

Customer_ID | Transaction_ID  | Item_ID | date        | trans_nr
ABC           2017-04-12-333    X8973     2017-04-12     1
ABC           2017-04-12-333    X2468     2017-04-12     1
ABC           2017-05-22-658    X2906     2017-05-22     2
ABC           2017-05-22-757    X8790     2017-05-22     2
ABC           2017-07-13-864    X8790     2017-07-13     3
BCD           2017-08-11-879    X2346     2017-08-11     1
BCD           2017-08-11-879    X2468     2017-08-11     1
CDE           2017-03-05-879    X8973     2017-03-05     1
CDE           2017-05-22-879    X2468     2017-05-22     2
CDE           2017-10-15-879    X2346     2017-10-15     3

我需要基本上围绕它,创建项目漏斗-换句话说,了解有多少人在每次访问中购买了每个项目,以及他们下一次购买的项目。在

这是我要查找的输出:

^{pr2}$

我设法用一些难看的代码来实现这一点:

df_first = df.loc[df['trans_nr'] == 1].copy()
df_first = df_first.rename(columns={'Item_ID': 'item_1trans'})

df_second = df.loc[df['trans_nr'] == 1].copy()
df_second = df_second.rename(columns={'Item_ID': 'item_2trans'})

df_third = df.loc[df['trans_nr'] == 1].copy()
df_third = df_third.rename(columns={'Item_ID': 'item_3trans'})

df_step1 = pd.merge(df_first,df_second,how='outer',on=['Customer_ID'])
df_final = pd.merge(df_step1,df_third,how='outer',on=['Customer_ID'])

pd.pivot_table(df_final,index= \
['item_1trans','item_2trans','item_3trans'],values=["Customer_ID"],\
aggfunc=lambda x: len(x.unique())).to_csv('test.csv')

但必须有更顺畅的方法。在


Tags: 项目iddftranscustomeritemnrloc