如何使用Python将新列添加到CSV文件?
问题描述:
我在一个数组中存储了一组四个数字,我想将它添加到“Score”列下的CSV文件中。如何使用Python将新列添加到CSV文件?
with open('Player.csv', 'ab') as csvfile:
fieldnames = ['Score']
writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
writer.writeheader()
for i in range(0, l):
writer.writerow({'Score': score[i]})
它追加到文件,但是这增加了一个新的行而不是一个新的列。有人可以指导将其添加到新列吗?
答
可能最简单的解决方案是使用Pandas。这太过于夸张,但对于CSV操作来说,它通常更清洁,超出了直读/写入范围。
说我有一个CSV文件,如下所示:
ASSETNUM ASSETTAG ASSETTYPE AUTOWOGEN
cent45 9164 0
cent45 9164 0
然后,相关的代码添加一列将如下所示:
import pandas as pd
df = pd.read_csv('path/to/csv.csv', delimiter='\t')
# this line creates a new column, which is a Pandas series.
new_column = df['AUTOWOGEN'] + 1
# we then add the series to the dataframe, which holds our parsed CSV file
df['NewColumn'] = new_column
# save the dataframe to CSV
df.to_csv('path/to/file.csv', sep='\t')
这增加了一个新的列,很好地进行扩展,并且易于使用。然后将得到的CSV文件将如下所示:
ASSETNUM ASSETTAG ASSETTYPE AUTOWOGEN NewColumn
0 cent45 9164 0 1
1 cent45 9164 0 1
比较这对为同一目的(从here修改)的CSV模块代码:
with open('path/to/csv.csv', 'r') as fin:
reader = csv.reader(fin, delimiter='\t')
with open('new_'+csvfile, 'w') as fout:
writer = csv.writer(fout, delimiter='\t')
# set headers here, grabbing headers from reader first
writer.writerow(next(reader) + ['NewColumn']
for row in reader:
# use whatever index for the value, or however you want to construct your new value
new_value = reader[-1] + 1
row.append(new_value)
writer.writerow(row)
你只有一个头字段。你如何期望它创建多个列? – ozgur
文件中有现有的列,我想将'Score'和数组'score []'一起追加到文件中。 –
通常,您必须读取现有文件,逐行添加新列,并将结果行写入新文件。 –