在python中更改csv文件的列顺序

时间:2016-03-03 14:58:59

标签: python csv

实际上我正在合并两个文件,合并后得到的最终输出就是我要重新订购的内容。

file1的成员

ID,名称,类

1,图莎尔,10

2,Barkha,12

3,吠陀支,4

4,Vaanika,1

file2的内容

ID,LastN,科

1,古普塔,A

2,古普塔,B

3,古普塔,C

4,古普塔,d

合并文件

ID,名称,类LastN,科

1,图莎尔,10,古普塔,A

2,Barkha,12,古普塔,B

3,吠陀支,4,古普塔,C

4,Vaanika,1,古普塔,d

我想重新安排上面的一些列

ID,名称,LastN,类,科

1,图莎尔,古普塔,10,A

2,Barkha,古普塔,12,B

3,吠陀支,古普塔,4,C

4,Vaanika,古普塔,1,d

检查它们出现的列顺序的变化。

有没有办法可以做到,感谢任何帮助。

提前致谢。

以下是我正在使用的代码。

import csv
import pandas as pd

def mergeFiles():
    a = pd.read_csv("C:/tushar/Python/file1.txt")
    b = pd.read_csv("C:/tushar/Python/file2.txt")

    #print(a)
    #print(b)

    merged = a.merge(b, on='ID')
    #print(merged)
    merged.to_csv("C:/tushar/Python/output1.csv", index=False)

def writeFiles():
    with open('C:/tushar/Python/output1.csv') as fi, open('C:/tushar/Python/output2.csv', 'wb') as fo:
        cr = csv.reader(fi)
        cw = csv.writer(fo)

        for ln in cr:
            lo = [ln[0], ln[1], ln[3], ln[2], ln[4]]
            cw.writerow(lo)
        print(cw)

def main():
    mergeFiles()
    writeFiles()

main()

1 个答案:

答案 0 :(得分:0)

csv文件作为列表读取,因此只需重新排列列表并将其写回:

import csv

#input: ID,Name,Class,LastN,Section
#output: ID,Name,LastN,Class,Section

with open('xx.csv') as fi, open('x2.csv', 'wb') as fo:
    cr = csv.reader(fi)
    cw = csv.writer(fo)
    for ln in cr:
        lo = [ln[0], ln[1], ln[3], ln[2], ln[4]]
        cw.writerow(lo)