我必须建立一个数据框架元素之间的依赖关系矩阵。列“ s”中的每个元素都有一个不同节点(从1到70)和对应时间(列“ t”)的列表。任务是找到所有节点之间的所有依赖关系,并将时间值的总和放入表中。
例如:节点sa1与以下节点具有连接:sa2,sa3(0行),sa3(1行),sa5,sa9(3行)
对于节点sa2,sa5,sa9,可以使用直接来自列“ t”的值,因为它们仅出现一次。节点3分两行显示,因此我们将“ t”值相加。
我尝试使用许多for循环来解决它,并且我遇到了计时问题,需要处理大约50分钟的数据,因此需要一些提示,说明如何准备数据进行分析。
正如我刚刚注意到的那样,仅需要计算主对角线上方的元素,主对角线将为NaN,而主对角线以下的元素将被镜像。
这就是我的输入示例的样子
s t
0 sa1,sa2,sa3 10
1 sa1,sa3 20
2 sa1,sa5,sa9 123
Run Code Online (Sandbox Code Playgroud)
这是生成上面显示的表的代码
sas = pd.Series(['sa1,sa2,sa3', 'sa1,sa3', 'sa1,sa5,sa9'], name='s')
times = pd.Series([10, 20, 123], name='t')
df = pd.concat([sas, times], axis=1)
Run Code Online (Sandbox Code Playgroud)
我希望得到下表
sa1 sa2 sa3 sa4 sa5 ... sa9
sa1 - 10 30 123 123
sa2 10 -
sa3 30 -
sa4 -
sa5 123 -
... -
sa9 123 -
Run Code Online (Sandbox Code Playgroud)