我试图根据它们在两列之间的顺序关系进行分组。在
d = {'df1':[10,20, 30, 60, 70, 40, 30, 70], 'df2':[20, 30, 40, 80, 70, 50, 90, 100]}
df = pd.DataFrame(data = d)
df
df1 df2
0 10 20
1 20 30
2 30 40
3 60 80
4 80 70
5 40 50
6 30 90
7 70 100
我期望结果如下:
让它变得更多清除:-df1和df2有一个基于它们的序列的关系。例如,10与20有直接关系,10与30到20有间接关系。10与40、20、30有间接关系。再举一个例子,80和70有直接关系,和100到70有间接关系。这对其余的列值有效。在
^{pr2}$我正在尝试使用下面的脚本,但未能成功。在
^{3}$有人能帮上忙吗?如果在堆栈溢出处有类似的解决方案,请告诉我。在
编辑: 第一个答案与上面的例子完美地结合在一起,但是当我尝试使用我想要做的数据时,它不能正确地工作。我的真实数据如下所示。在
df1 df2
0 10 20
1 10 30
2 10 80
3 10 90
4 10 120
5 10 140
6 10 170
7 20 180
8 30 40
9 30 165
10 30 175
11 40 20
12 40 50
13 50 60
14 60 70
15 70 180
16 80 180
17 90 100
18 100 110
19 110 180
20 120 130
21 130 180
22 140 150
23 150 160
24 160 165
25 165 180
26 165 200
27 170 175
28 175 180
29 175 200
30 180 190
31 190 200
32 200 210
33 210 220
34 220 230
35 230 240
36 240 -
一种可能的解决方案:
印刷品:
^{pr2}$编辑:基于新输入数据的其他解决方案。现在我正在检查路径中可能的圆:
印刷品:
或
pprint(d, width=250)
:编辑2:如果
df
是带有“df1”和“df2”列的输入数据帧:这应该可以做到:
输出:
^{pr2}$(*)我还检查了extended dataframe-它非常快,我不会共享输出,因为我的IDE正在截断它;)
嗨,谢谢你的澄清,我有一个递归函数的解决方案,你可以试试。对于大数据帧可能效率不高,但似乎效果良好。 该函数返回一个列表,但您可以编辑结果序列,以将该列表联接为字符串。在
相关问题 更多 >
编程相关推荐