Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/279.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中的关联组_Python_Pandas_Dataframe_Associations - Fatal编程技术网

python中的关联组

python中的关联组,python,pandas,dataframe,associations,Python,Pandas,Dataframe,Associations,在预处理之后,我有一个最后的数据帧,其中包含“timestamp”、“group”、“person1”、“person2”列。我试图弄清楚如何编写我的需求,或者想知道是否可以使用python。 我试图提取的是每个组中的组。例如:在G0组中,A与B会面,B与C会面,A与D会面。这意味着ABCD在该组中形成一个组。每个组中可以有多个组(例如,在组G1中)。我该怎么做?我可以应用什么逻辑或代码来提取这个?我找了很多,但毫无帮助 数据帧样本和预期输出的pic为: 样本数据: df = pd.DataF

在预处理之后,我有一个最后的数据帧,其中包含“timestamp”、“group”、“person1”、“person2”列。我试图弄清楚如何编写我的需求,或者想知道是否可以使用python。 我试图提取的是每个组中的组。例如:在G0组中,A与B会面,B与C会面,A与D会面。这意味着ABCD在该组中形成一个组。每个组中可以有多个组(例如,在组G1中)。我该怎么做?我可以应用什么逻辑或代码来提取这个?我找了很多,但毫无帮助

数据帧样本和预期输出的pic为:

样本数据:

df = pd.DataFrame(
    {
        "timestamp": ['25-06-2020 09:29','25-06-2020 09:29','25-06-2020 09:31','25-06-2020 09:32','25-06-2020 09:33','25-06-2020 09:33','25-06-2020 11:17','25-06-2020 11:17','25-06-2020 11:17','25-06-2020 11:17','25-06-2020 12:29','25-06-2020 12:29','25-06-2020 12:30','25-06-2020 12:30'],
        "group": ['G0','G0','G0','G0','G0','G0','G1','G1','G1','G1','G1','G2','G2','G2'],
        "person1": ['A','A','B','A','X','Z','A','B','L','X','Y','L','N','O'],
        "person2": ['B','B','C','D','Y','N','B','C','M','Y','Z','M','O','P']
    }
)

这当然是有趣的事情,特别是考虑到目前的大流行。听起来你需要帮助你。Python可以通过字典和自定义类来实现这一点


此外,它可能也有一些帮助。您需要根据自己的需求调整其
find_all_graphs()
函数。

您可以使用networkx库:

输出:

           timestamp group person1 person2 subgroup
0   25-06-2020 09:29    G0       A       B     DACB
1   25-06-2020 09:29    G0       A       B     DACB
2   25-06-2020 09:31    G0       B       C     DACB
3   25-06-2020 09:32    G0       A       D     DACB
4   25-06-2020 09:33    G0       X       Y       YX
5   25-06-2020 09:33    G0       Z       N       NZ
6   25-06-2020 11:17    G1       A       B      ACB
7   25-06-2020 11:17    G1       B       C      ACB
8   25-06-2020 11:17    G1       L       M       ML
9   25-06-2020 11:17    G1       X       Y      ZYX
10  25-06-2020 12:29    G1       Y       Z      ZYX
11  25-06-2020 12:29    G2       L       M       ML
12  25-06-2020 12:30    G2       N       O      ONP
13  25-06-2020 12:30    G2       O       P      ONP
                         min                 max
subgroup                                        
ACB      2020-06-25 11:17:00 2020-06-25 11:17:00
DACB     2020-06-25 09:29:00 2020-06-25 09:32:00
ML       2020-06-25 11:17:00 2020-06-25 12:29:00
NZ       2020-06-25 09:33:00 2020-06-25 09:33:00
ONP      2020-06-25 12:30:00 2020-06-25 12:30:00
YX       2020-06-25 09:33:00 2020-06-25 09:33:00
ZYX      2020-06-25 11:17:00 2020-06-25 12:29:00
分组:

df['timestamp'] = pd.to_datetime(df['timestamp'])
df.groupby('subgroup')['timestamp'].agg(['min', 'max'])
输出:

           timestamp group person1 person2 subgroup
0   25-06-2020 09:29    G0       A       B     DACB
1   25-06-2020 09:29    G0       A       B     DACB
2   25-06-2020 09:31    G0       B       C     DACB
3   25-06-2020 09:32    G0       A       D     DACB
4   25-06-2020 09:33    G0       X       Y       YX
5   25-06-2020 09:33    G0       Z       N       NZ
6   25-06-2020 11:17    G1       A       B      ACB
7   25-06-2020 11:17    G1       B       C      ACB
8   25-06-2020 11:17    G1       L       M       ML
9   25-06-2020 11:17    G1       X       Y      ZYX
10  25-06-2020 12:29    G1       Y       Z      ZYX
11  25-06-2020 12:29    G2       L       M       ML
12  25-06-2020 12:30    G2       N       O      ONP
13  25-06-2020 12:30    G2       O       P      ONP
                         min                 max
subgroup                                        
ACB      2020-06-25 11:17:00 2020-06-25 11:17:00
DACB     2020-06-25 09:29:00 2020-06-25 09:32:00
ML       2020-06-25 11:17:00 2020-06-25 12:29:00
NZ       2020-06-25 09:33:00 2020-06-25 09:33:00
ONP      2020-06-25 12:30:00 2020-06-25 12:30:00
YX       2020-06-25 09:33:00 2020-06-25 09:33:00
ZYX      2020-06-25 11:17:00 2020-06-25 12:29:00

对实际上,当前的用例是关于流行病的:),但我应该在2天内给出输出。。不管怎样,我都会经历这个:)非常感谢