根据文件名添加 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
的示例输出:
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 )
我有以下 CSV
个文件作为目录中的输入文件:
USA_Chicago_data.csv
USA_Dallas_data.csv
其中有这样的数据:
Area Population No_of_houses
Brookfield 100000 20000
Springdale 50000 10000
我想根据文件名在文件开头添加一列城市名称。
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 )