【问题标题】:Reordering columns in CSV重新排序 CSV 中的列
【发布时间】:2016-10-26 08:00:35
【问题描述】:

之前已发布过问题,但未正确传达要求。我有一个包含 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 是第 1,2,3 和 4 列。我需要以这样的方式对列进行重新排序,以便为我提供以下信息。

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 列,其他列相应地向右移动。

【问题讨论】:

  • 您能否展示您的尝试以及为什么许多related 问题无法回答您的问题?这只需要您重新排序列索引,然后通过传递新顺序 reindex df
  • 使用 Excel 或等效的开源软件
  • @EdChum,是的,但是有一千列。我如何重新排序这么多列。有通用的方法吗? python新手
  • @EdChum, import pandas as pd df = pd.read_csv('test.csv') ncols = df.columns.tolist() cols = ncols[-1:] + ncols[:-1] df[cols].to_csv('test1.csv',index=False) 此代码将最后一列带到第一列。但我被困在如何重新排序随机列

标签: python python-2.7 csv numpy pandas


【解决方案1】:

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

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

5、3、休息……

DF

In [82]: df
Out[82]:
   A  B    C  D  E  F  G
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 [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

【讨论】:

  • @DigantaBharali,有帮助吗?
【解决方案2】:
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

【讨论】:

    猜你喜欢
    • 2016-01-05
    • 1970-01-01
    • 1970-01-01
    • 2022-11-04
    • 2018-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-30
    相关资源
    最近更新 更多