我有一个如下所示的数据框:
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循环,因为它对我来说非常庞大。
答案 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]]