Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/301.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_Numpy - Fatal编程技术网

Python 在两列之间进行排序

Python 在两列之间进行排序,python,pandas,numpy,Python,Pandas,Numpy,我有一个数据帧: start end 1 10 26 50 6 15 1 5 11 25 start end 1 10 11 25 26 50 1 5 6 15 我期望以下数据帧: start end 1 10 26 50 6 15 1 5 11 25 start end 1 10 11 25 26 50 1

我有一个数据帧:

start  end
1      10
26     50
6      15
1      5
11     25
start  end
1      10
11     25
26     50
1      5
6      15
我期望以下数据帧:

start  end
1      10
26     50
6      15
1      5
11     25
start  end
1      10
11     25
26     50
1      5
6      15
此处注意排序顺序,但第n行的结尾必须是第n+1行的开始+1。如果未找到,请搜索开始为1的其他开始


有人能建议我可以使用什么样的排序和分组组合将上述数据帧转换为所需格式吗?

您可以将df转换为列表,然后执行以下操作:

l=[1,10,26,50,6,15,1,5,11,25]
result=[]
for x in range(int(len(l)/2)):
    result.append(sorted([l[2*x],l[2*x+1]])[1])
    result.append(sorted([l[2*x],l[2*x+1]])[0])
这将为您提供
结果

[1, 10, 26, 50, 6, 15, 1, 5, 11, 25]

要将原始df转换为列表,可以执行以下操作:

startcollist=df['start'].values.tolist()

endcollist=df['end'].values.tolist()

l=[]
for index, each in enumerate(originaldf):
    l.append(each)
    l.append(endcollist[index])

然后,您可以将
结果
转换回数据帧:

df=pd.DataFrame({'start':result[1::2], 'end':result[0::2]})
给出结果:

    end start
0   10  1
1   50  26
2   15  6
3   5   1
4   25  11

表达式
result[1::2]
给出了
result
的每个奇数元素,
result[0::2]
给出了每个偶数元素。有关说明,请参见此处:

感谢您的快速回复!但这能确保原始数据帧中的开始和结束对保持不变吗?编辑了答案,现在满意了吗?输出的排序顺序不正确。我也尝试了您对数组[26,50,1,10,6,15,1,5,11,25]的解决方案,但没有改变我答案的第一个for循环中的行顺序,可能想再试一次。