以下是我的情景:
我创建了一个列表字典。我是通过导入.csv数据及其列标题创建的;即列标题是键,它们的数据是字典的项目。字典中的项目是列表。
我只想将第一个.csv文件中的项目复制到另一个第二个.csv文件中,该文件中有预先填充的标题;即我只想在第二个文件中的预填充标题下复制数据。第二个.csv文件中的标题不是连续的,即' NAME'标题可能位于A列,而“DATE”标题位于列A中。标题可以在E列中。
我的python脚本如下:
#!/usr/bin/python
import os
import os.path
import re
import sys
import pdb
import csv
f =open('input.csv','rU')
reader = csv.reader(f)
headers = reader.next()
column = {}
for h in headers:
column[h] = []
for row in reader:
for h,v in zip(headers, row):
column[h].append(v)
g = zip(*column['Name'])
resultFile = open("output.csv",'wb')
wr = csv.writer(resultFile, dialect='excel')
wr.writerow(g)
我可以将字典项(列表)打印到.csv文件中。
我的问题是:
1)列表以水平方式打印(尽管使用了zip功能)
2)我不知道如何将垂直列表打印到output.csv文件中的特定列位置;我在StackOverflow的答案研究中没有遇到过这个问题
3)即使我打印列表,它也会在output.csv文件中写入预定的标题。
我知道这个问题有很多,但如果有人可以提供帮助并指出我正确的方向,我将非常感激。
答案 0 :(得分:0)
如果两个csv文件具有相同的长度(行数)并且您可以使用pandas: 1.将两个csv读入pandas DataFrames, 2.将第一个数据帧中的列插入第二个数据帧中 3.写出第二个数据帧。
import pandas as pd
df1 = pd.read_csv('input.csv')
df2 = pd.read_csv('output.csv')
df2.insert(index, new_col_label, df1[column_label_in_df1])
df2.to_csv('output.csv', index=False)