簡體   English   中英

根據文件名添加 CSV 列

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM