Python操作csv檔案方法
阿新 • • 發佈:2018-12-20
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)