data = [[12345,"AAA"],[12345,"BBB"],[12345,"CCC"],[98765,"KKK"],[98765,"MMM"],[56321,"JJJ"],[56321,"SSS"],[56321,"PPP"]]
df = pd.DataFrame(data,columns=['Sales_ID','Company_Name'])
大家好,我有上面的数据框,我想在每个 groupby Sales_ID 中创建一个匹配项。我怎么能在python中做到这一点?
我试图对 df 进行分组并为每个 sales_ID 提取所有公司,但不知道下一步该怎么做。
df.groupby('Sales_ID').apply(lambda x:x['Company_Name'].tolist())
预期成绩:
Sales_ID Company Company
12345 AAA BBB
12345 AAA CCC
12345 BBB CCC
98765 KKK MMM
56321 JJJ SSS
56321 JJJ PPP
56321 SSS PPP
谢谢您的帮助。
最佳答案
我正在使用 itertools
s=df.groupby('Sales_ID',sort=False)['Company_Name'].apply(list)
l=[list(itertools.combinations(x,2)) for x in s]
Newdf=pd.DataFrame({'Sales_ID':s.index.repeat(list(map(len,l)))})
Newdf=pd.concat([Newdf,pd.DataFrame(sum(l,[]))],axis=1)
Newdf
Sales_ID 0 1
0 12345 AAA BBB
1 12345 AAA CCC
2 12345 BBB CCC
3 98765 KKK MMM
4 56321 JJJ SSS
5 56321 JJJ PPP
6 56321 SSS PPP
关于python - 如何使用 itertools 提取 groupby 值?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57174497/