使用dictreader时重命名标头

bas*_*ann 5 python csv header

我正在寻找使用dictreader/dictwriter重命名标头的最佳方法,以添加到我已经完成的其他步骤.

这就是我想对下面的Source数据示例所做的.

  1. 删除前两行
  2. 将列(标题和数据)重新排序为与源文件相比的2,1,3
  3. 将标题重命名为ASXCode,CompanyName,GISC

当我在

如果我使用'reader = csv.reader.inf',则删除第一行并重新排序列但是按预期没有标题重命名

或者,当我运行dictreader行'reader = csv.DictReader(inf,fieldnames =('ASXCode','CompanyName','GICS'))''我收到错误'dict包含不在fieldnames中的字段:'并显示第一个数据行而不是标题.

我有点困惑于如何解决这个问题,所以任何提示都会受到赞赏.

源数据示例

ASX listed companies as at Mon May 16 17:01:04 EST 2016     

Company name    ASX code    GICS industry group
1-PAGE LIMITED  1PG Software & Services
1300 SMILES LIMITED ONT Health Care Equipment & Services
1ST AVAILABLE LTD   1ST Health Care Equipment & Services
Run Code Online (Sandbox Code Playgroud)

我的守则

import csv
import urllib.request
from itertools import islice

local_filename = "C:\\myfile.csv"
url = ('http://mysite/afile.csv')

temp_filename, headers = urllib.request.urlretrieve(url)

with open(temp_filename, 'r', newline='') as inf, \
        open(local_filename, 'w', newline='') as outf:

  #  reader = csv.DictReader(inf, fieldnames=('ASXCode', 'CompanyName', 'GICS'))
    reader = csv.reader(inf)
    fieldnames = ['ASX code', 'Company name', 'GICS industry group']  
    writer = csv.DictWriter(outf, fieldnames=fieldnames)

# 1. Remove top 2 rows
    next(islice(reader, 2, 2), None)

# 2. Reorder Columns
    writer.writeheader()  
    for row in csv.DictReader(inf):
        writer.writerow(row)        
Run Code Online (Sandbox Code Playgroud)

Abb*_*bas 1

IIUC 这里是一个使用pandas其功能的解决方案read_csv

import pandas as pd
#Considering that you have your data in a file called 'stock.txt' 
#and it is tab separated, by default the blank lines are not read by read_csv, 
#hence set the header=1
df = pd.read_csv('stock.txt', sep='\t',header=1)
#Rename the columns as required
df.columns= ['CompanyName', 'ASXCode', 'GICS']
#Reorder the columns as required
df = df[['ASXCode','CompanyName','GICS']]
Run Code Online (Sandbox Code Playgroud)

这就是你在 ipython 中执行此操作的方法,输出如下所示: 在此输入图像描述