我正在尝试使用另一个exsting csv文件中的一列创建一个新的csv文件。 Python不是在csv文件的一列中打印Address,而是将地址分布在多个列中。我该怎么做才能消除多栏问题。
from __future__ import absolute_import, division, print_function
import csv
from itertools import imap
from operator import itemgetter
def main():
delimiter = ','
with open('C:/Addresses.csv', 'rb') as input_file:
reader = csv.reader(input_file, delimiter=delimiter)
with open('thefirstcolumn.csv', 'wb') as output_file:
writer = csv.writer(output_file, delimiter=delimiter)
writer.writerows(imap(itemgetter(1), reader))
if __name__ == '__main__':
main()
在原始文件中:
abcdcolumn Address
********-A-1 6525 Mountain
********-A-2 6543 Mountain
********-A-4 6579 Mountain
********-A-5 6597 Mountain
********-A-6 6615 Mountain
********-A-7 6633 Mountain
新csv文件中的结果:
A d d r e s s
6 5 2 5 M o u n t
6 5 4 3 M o u n t
6 5 6 1 M o u n t
6 5 7 9 M o u n t
6 5 9 7 M o u n t
6 6 1 5 M o u n t
6 6 3 3 M o u n t
答案 0 :(得分:3)
writer.writerows
需要一个列表列表,您正在为它提供一个字符串列表。
将writer.writerows(imap(itemgetter(1), reader))
更改为:
for address in imap(itemgetter(1), reader):
writer.writerow([address])
应该有用。
答案 1 :(得分:3)
一般情况下,我会使用pandas包进行csv文件操作。
import pandas
df = pandas.read_csv(input_file, delimiter=delimiter)
df['Address'].to_csv(output_file)