重新排列datafram中列的非连续顺序

2024-04-26 11:47:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个数据帧(result)df和n(variable)列,这是我通过合并其他两个数据帧生成的:

result1 = df1.merge(df2, on='ID', how='left')

result1 dataframe应该有一个列变量(这是较大脚本的一部分)。我想安排列的方式,最后2列将是第二列和第三列连续,然后所有剩余的列将遵循(而第一列保持为第一列)。如果result1已知有6列,那么我可以使用:

result2=result1.iloc[:,[0,4,5,1,2,3]] #this works fine. 

但是,我需要1,2,3在一个范围内的格式,因为它是不实际的输入每个df的数字的总和。所以,我想用:

result2=result1.iloc[:,[0,len(result1.columns), len(result1.columns)-1, 1:len(result1.columns-2]]
#Assuming  6 columns :  0,           5        , 4                     ,  1,  2, 3

这是一个理想的方法,但这是创造语法错误。有什么建议可以解决这个问题吗?你知道吗


Tags: columns数据iddflenonresultmerge
1条回答
网友
1楼 · 发布于 2024-04-26 11:47:26

我不使用切片语法,而是构建一个列表并使用它:

>>> df
   0  1  2  3  4  5
0  0  1  2  3  4  5
1  0  1  2  3  4  5
2  0  1  2  3  4  5
3  0  1  2  3  4  5
4  0  1  2  3  4  5
>>> ncol = len(df.columns)
>>> df.iloc[:,[0, ncol-1, ncol-2] + list(range(1,ncol-2))]
   0  5  4  1  2  3
0  0  5  4  1  2  3
1  0  5  4  1  2  3
2  0  5  4  1  2  3
3  0  5  4  1  2  3
4  0  5  4  1  2  3

相关问题 更多 >