Python 在CSV中重新排序列

Python 在CSV中重新排序列,python,python-2.7,csv,numpy,pandas,Python,Python 2.7,Csv,Numpy,Pandas,问题之前已经发布,但要求没有正确传达。我有一个超过1000列的csv文件: A B C D .... X Y Z 1 0 0.5 5 .... 1 7 6 2 0 0.6 4 .... 0 7 6 3 0 0.7 3 .... 1 7 6 4 0 0.8 2 .... 0 7 6 这里X、Y和Z是999、1000、10001列,A、B、C、D是第一、第二、第三和第四列。我需要对这些列进行重新排序,以便

问题之前已经发布,但要求没有正确传达。我有一个超过1000列的csv文件:

A   B   C   D ....  X   Y   Z
1   0   0.5 5 ....  1   7   6
2   0   0.6 4 ....  0   7   6
3   0   0.7 3 ....  1   7   6
4   0   0.8 2 ....  0   7   6
这里X、Y和Z是999、1000、10001列,A、B、C、D是第一、第二、第三和第四列。我需要对这些列进行重新排序,以便它能提供以下信息

D   Y   Z   A   B   C   ....X
5   7   6   1   0   0.5 ....1
4   7   6   2   0   0.6 ....0
3   7   6   3   0   0.7 ....1
2   7   6   4   0   0.8 ....0

即第4列变为第1列,第1000列和第1001列变为第2列和第3列,其他列相应右移

所以问题是如何以自定义方式对列重新排序

例如,您具有以下DF,并且希望按以下方式(索引)对列重新排序:

5,3,休息

DF

纵队

In [83]: cols = df.columns.tolist()

In [84]: cols
Out[84]: ['A', 'B', 'C', 'D', 'E', 'F', 'G']
重新排序:

In [88]: cols = [cols.pop(5)] + [cols.pop(3)] + cols

In [89]: cols
Out[89]: ['F', 'D', 'A', 'B', 'C', 'E', 'G']

In [90]: df[cols]
Out[90]:
   F  D  A  B    C  E  G
0  7  5  1  0  0.5  1  6
1  7  4  2  0  0.6  0  6
2  7  3  3  0  0.7  1  6
3  7  2  4  0  0.8  0  6

你能告诉我你尝试了什么,为什么很多问题都不能回答你的问题吗?这只需要您对列索引进行重新排序,然后通过传递新的orderUse Excel或开放源代码对df进行重新排序equivalent@EdChum,是的,但是有上千列。如何对这么多列重新排序。有通用的方法吗?新手python@EdChum,导入熊猫为pd df=pd.read_csv('test.csv')ncols=df.columns.tolist()cols=ncols[-1:]+ncols[:-1]df[cols]。to_csv('test1.csv',index=False)此代码将最后一列带到第一列。但我被困在如何重新排序随机columns@DigantaBharali,有帮助吗?
In [88]: cols = [cols.pop(5)] + [cols.pop(3)] + cols

In [89]: cols
Out[89]: ['F', 'D', 'A', 'B', 'C', 'E', 'G']

In [90]: df[cols]
Out[90]:
   F  D  A  B    C  E  G
0  7  5  1  0  0.5  1  6
1  7  4  2  0  0.6  0  6
2  7  3  3  0  0.7  1  6
3  7  2  4  0  0.8  0  6
In [4]: df
Out[4]:
   A  B    C  D  X  Y  Z
0  1  0  0.5  5  1  7  6
1  2  0  0.6  4  0  7  6
2  3  0  0.7  3  1  7  6
3  4  0  0.8  2  0  7  6

In [5]: df.reindex(columns=['D','Y','Z','A','B','C','X'])
Out[5]:
   D  Y  Z  A  B    C  X
0  5  7  6  1  0  0.5  1
1  4  7  6  2  0  0.6  0
2  3  7  6  3  0  0.7  1