Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python—如何从数据帧中的GROUPBY中获取所有可能的组合_Python_Pandas_Pandas Groupby_Itertools - Fatal编程技术网

Python—如何从数据帧中的GROUPBY中获取所有可能的组合

Python—如何从数据帧中的GROUPBY中获取所有可能的组合,python,pandas,pandas-groupby,itertools,Python,Pandas,Pandas Groupby,Itertools,我有一个4列的数据框。前三个柱只对我作为一组使用有用。我想获得1个员工编号/客户编号/日期的所有可能的事件编号组合。例如,在下图中: 这是我想要得到的输出: 请注意,对我来说,顺序并不重要,这意味着组合1234567与组合4567123相同。因此,如果有5例1234567和8例4567123,我只需要一行1234567和13 有什么想法吗?我还是Python的新手,有点困了 非常感谢:) 编辑: 此代码似乎正在运行: import pandas as pd import time from

我有一个4列的数据框。前三个柱只对我作为一组使用有用。我想获得1个员工编号/客户编号/日期的所有可能的事件编号组合。例如,在下图中:

这是我想要得到的输出:

请注意,对我来说,顺序并不重要,这意味着组合1234567与组合4567123相同。因此,如果有5例1234567和8例4567123,我只需要一行1234567和13

有什么想法吗?我还是Python的新手,有点困了

非常感谢:)

编辑:

此代码似乎正在运行:


import pandas as pd
import time
from collections import Counter
from itertools import chain, combinations

import sys
sys.path.append('C:/Config Python')
import config
import pyodbc  
import pandas as pd
import numpy as np

pd.options.display.max_colwidth = 150
  
#Build teradata connection function  
def td_connect(usr, pwd, DRIVER = 'XXX', DBCNAME = 'YYY'):  
    try:  
        conn_td = pyodbc.connect(DRIVER=DRIVER, DBCNAME=DBCNAME, UID=usr, PWD=pwd, autocommit = True)  
        return conn_td  
    except IOError as e:  
        print('I/O error !')   
        

          
#Give the query you wish to run           
sql = """ 

The code is here

"""  
  
#Put td login information  
conn = td_connect(usr=config.username,pwd=config.password)  
  
#get data  
df = pd.read_sql(sql, conn)  

df

gp = df.groupby(['Employee no', 'Client number', 'Date'])

d = dict()
for name, group in gp:
    l = group['Event Number'].to_list()    
    try:
        d[len(l)].append(l)
    except KeyError:
        d[len(l)] = [l]
d

meets = []
for i in d.keys():
    meets.append(Counter(chain.from_iterable(combinations(line, i) for line in d[i])))
    
print(meets)

灵感来自


请考虑分享你目前所做的一切,非常感谢!我在第一线。它似乎不适合浮球。。它在所有的数字之间加上一个,表示您使用了一个
pandas.read_csv
,添加参数
separator=“,”
。尽管如此,请提供@Alper在前面的评论中询问的代码。您可以编辑以前的帖子。
df['Combinations'] = df.groupby(['Employee no', 'Client number', 'Date'])['Event Number'].transform(lambda x: ",".join(x))
df['Counts'] = df.groupby(['Employee no', 'Client number', 'Date']).counts()['Event number'] 
result = df[['Employee no', 'Client number', 'Date', 'Combinations', 'Counts']].drop_duplicates()