我有一个Dataframe,我需要创建一个新的Dataframe,当一行在某个列中与另一行具有相同的元素时,第二次出现的行应该直接移动到包含第一次出现的行的下面。我担心这可能很难解释,但希望通过例子能更清楚
我有这样一个df:(重要的一栏是‘方向’)
Node | Feature | Indicator | Value | Class | Direction
--------------------------------------------------------
1 | WPS | <= | 0.27 | 4 | 1 -> 2
--------------------------------------------------------
2 | ABC | <= | 0.40 | 5 | 2 -> 3
--------------------------------------------------------
3 | CXC | <= | 0.45 | 2 | 3 -> 4
--------------------------------------------------------
4 | WPS | <= | 0.56 | 1 | 1 -> 5
--------------------------------------------------------
5 | ABC | <= | 0.30 | 3 | 2 -> 5
--------------------------------------------------------
6 | CXC | <= | 0.55 | 5 | 3 -> 1
方向上的第一个数字出现两次时(对于节点(1&;4) ,(2&;5) 和(3&;6) ,我希望第二次出现的行(节点4、5和6)直接移动到另一行的下面
我需要这样的结果:
Node | Feature | Indicator | Value | Class | Direction
--------------------------------------------------------
1 | WPS | <= | 0.27 | 4 | 1 -> 2
--------------------------------------------------------
4 | WPS | <= | 0.56 | 1 | 1 -> 5
--------------------------------------------------------
2 | ABC | <= | 0.40 | 5 | 2 -> 3
--------------------------------------------------------
5 | ABC | <= | 0.30 | 3 | 2 -> 5
--------------------------------------------------------
3 | CXC | <= | 0.45 | 3 | 3 -> 4
--------------------------------------------------------
6 | CXC | <= | 0.55 | 5 | 3 -> 1
我花了这么长时间试图想出一个解决办法,所以如果有人能帮助我,我将非常感激
我现在想做的是:
创建一个包含['Direction']列中第一个整数的列表: 第一个输入值=[1,2,3,1,2,3]
然后,我尝试在第一个int中找到第一次和第二次出现的索引,我希望通过索引来访问数据帧的行
first_ind_ls = []
second_ind_ls = []
for i in firstInt_ls:
# Find the indexes of the first and second occurance
first_ind = firstInt_ls.index(i, 0)
second_ind = firstInt_ls.index(i, first_ind+1)
first_ind_ls.append(first_ind)
second_ind_ls.append(second_ind)
这将产生:
print(first_ind_ls)
>> [1, 2, 3, 1, 2, 3]
print(second_ind_ls)
>> [4, 5, 6]
我从第一个索引中删除所有重复项,以便两个列表的大小相同
# Resulting lists:
>> [1, 2, 3]
>> [4, 5, 6]
现在我想遍历我的数据帧,取第一个索引中第一个索引处的行(即1)并添加到新的数据帧,然后取第二个索引中第一个索引处的行(即4)并将其添加到新的数据帧。然后继续,直到得到如上所述的数据帧
我已经尝试的是没有任何工作,所以我不会麻烦张贴的代码,除非要求
我真的很难弄清楚如何循环使用我的df并访问行,同时循环使用包含索引的两个列表,然后在每个索引处向新df添加行
我只是不知道如果有人有什么建议我会非常感激。我对编程很陌生,所以我想我看待问题的方式可能是错误的
如果我理解正确,排序的唯一键是
Direction
列中的第一个元素。我假设Direction
是string
类型。所以看看这个非常简单的方法是否适合你创建一个键列(不是绝对需要,但需要澄清)
然后对
key
上的值进行排序这有用吗?还是我遗漏了什么
相关问题 更多 >
编程相关推荐