使用另一个csv文件中的列创建一个新的csv文件

时间:2016-12-14 16:47:13

标签: python python-2.7 csv

我正在尝试使用另一个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

2 个答案:

答案 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)