客户如何在交易顺序组中将数据帧转换为交易数据

时间:2019-04-08 17:32:47

标签: python pandas

我有一个如下所示的数据框:

import pandas as pd
df = pd.DataFrame({'Invoice': [1, 1, 2, 3,3,3,4,5,5,6],
                    'Stockcode': ['A', 'B', 'C','A','D','E','B','C','A','D' ],
                    'InvoiceDate': ['01-01-2019', '01-01-2019', '14-01-2019', 
                                    '17-02-2019','17-02-2019','17-02-2019',
                    '01-01-2019','14-01-2019','14-01-2019', 
                                    '17-02-2019'],
            'CustomerID':['C1','C1','C1','C1','C1','C1',
                                     'C2','C2','C2','C2' ]})

我正在查看显示为

的输出
Customer       Value:
C1             {A,B},{C},{A,D,E}
C2             {B},{C,A},{D}

我对Python很陌生。我尝试了不同的分组方法。我不想使用For循环,因为它对我来说非常庞大。

1 个答案:

答案 0 :(得分:0)

通过对CustomerID和发票进行分组并获取股票代码列表,将交易重新构造为发票。

 df = df.groupby(['CustomerID','Invoice'])['Stockcode'].apply(list).reset_index()

现在将结果发票(股票代码列表)分组到一个列表中。

df = df.groupby('CustomerID')['Stockcode'].apply(list).reset_index()

最终得到的是一个列表列表,其中每个列表对于该客户都是必不可少的发票。

输出

  CustomerID                 Stockcode
0         C1  [[A, B], [C], [A, D, E]]
1         C2        [[B], [C, A], [D]]