[英]Add a CSV column based on file name
我有以下CSV
文件作為目錄中的輸入文件:
USA_Chicago_data.csv
USA_Dallas_data.csv
其中有這樣的數據:
Area Population No_of_houses
Brookfield 100000 20000
Springdale 50000 10000
我想在文件的開頭添加一列,其中包含基於文件名的城市名稱。
USA_Chicago_data.csv 的樣本USA_Chicago_data.csv
:
City Area Population No_of_houses
Chicago Brookfield 100000 20000
Chicago Springdale 50000 10000
它應該有條件讀取文件名並從中提取城市並將其添加到第一列。
我正在嘗試以下腳本:
with open(file, 'r') as csvinput:
if ("Chicago" in file):
with open('file'+_output.csv', 'w') as csvoutput:
writer = csv.writer(csvoutput, lineterminator='\n')
for row in csv.reader(csvinput):
writer.writerow(row + ['City'])
但它遇到了錯誤。 有什么解決辦法? 我想在不使用 pandas 的情況下實現這一點。
這樣的事情應該可以解決問題。 由於引號混淆,您在第二個“打開”語句中有語法錯誤。
# Extract the city:
city = file.split('_')[1]
with open(file,'r') as csvinput, open(f'USA_{city}_data_output.csv','w') as cvsoutput:
writer = csv.writer(csvoutput, lineterminator='\n')
for row in csv.reader(csvinput):
if row[0] == 'Area':
row.insert( 0, 'City')
else:
row.insert( 0, city )
writer.writerow(row)
要覆蓋原始文件,您需要:
# Extract the city:
city = file.split('_')[1]
newfile = f'USA_{city}_data_output.csv'
with open(file,'r') as csvinput, open(newfile,'w') as cvsoutput:
writer = csv.writer(csvoutput, lineterminator='\n')
for row in csv.reader(csvinput):
if row[0] == 'Area':
row.insert( 0, 'City')
else:
row.insert( 0, city )
writer.writerow(row)
os.remove( file )
os.rename( newfile, file )
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.