1. 程式人生 > >Python操作csv檔案方法

Python操作csv檔案方法

DictReader字典讀取csv指定列的內容

想要讀取“timer Start 8”的內容,或者獲取該行其他列的資訊,例如獲取該行“RO timer expire”列對應的內容:

with open(csvpath,'rb') as csvfile:
    reader = csv.DictReader(csvfile)
    for this_row in reader:
        if this_row['RO timer start'] != "timer start 8":
            # get content of "RO timer expire" column for this row
            get_content = this_row['RO timer expire]

提取csv中指定列並輸出到新的csv中

方法1:用csv

太傻b了,每讀取一列資料都要執行一次with open操作開啟csv,好像沒法只進行一次csv開啟操作來讀取多個列。但有時執行指令碼時候用pandas方法又會出bug,用csv開啟是絕對不會出錯就是了。

with open(csv1path,'rb') as csvfile:
    reader = csv.DictReader(csvfile)            
    frc_list = [row['column1'] for row in reader]
with open(csvpath,'rb') as csvfile:
    reader = csv.DictReader(csvfile)            
    abstime_list = [row['column2'] for row in reader]
with open(csvpath,'rb') as csvfile:
    reader = csv.DictReader(csvfile)            
    roStart_list = [row['column3'] for row in reader]

all_list = zip(column1, column2, column3)

with open(csvpath.replace(csv2path, "wb") as csvFile:
    writer = csv.writer(csvFile)
    # write title for each column
    writer.writerow(['title1', 'title2', 'title3'])
    for row in all_list:
        writer.writerow(row)      

方法2:用pandas

新生成的csv2列明直接沿用csv1中的列名,兩行搞定。

import pandas as pd

df = pd.read_csv(csv1path, usecols = ['column1', 'column2', 'column3'])
df.to_csv(csv2path, sep=',', header=True, index=False)