如何将值从一个移到另一行/列

时间:2019-07-09 00:30:10

标签: python-3.x csv data-manipulation

我正在尝试编写一个python脚本,将一个csv文件中的数据写入另一个结构不同的csv文件中

我目前只能复制源文件结构中的数据。

!/usr/bin/env python3
#imports csv module

import csv

#opens file and reads
out=open("forecast_test.csv","rb")
data=csv.reader(out)

with open('new_data.csv', 'w') as new_data:
        csv_writer = csv.writer(new_data)

        for line in data:
            csv_writer.writerow(line)
            print (line)

源文件的结构如下

 id,
123,
435,
765,

我希望我的脚本将其写入结构如下的csv文件

 id, id2, id3
123, 435, 765

2 个答案:

答案 0 :(得分:1)

我希望第一列不仅是id0id,而且这样做可以节省循环中if语句的需要。

import csv

datafile=open('forecast_test.csv', 'r')
reader = csv.reader(datafile)

ls=[]
for r in reader:
    ls.append(r[0])

coltit=ls[0]

ls.pop(0)

lout=[]
lout1=[]
for x in ls:
    lout.append(str(coltit)+str(ls.index(x)))
    lout1.append(x)

with open('new_data.csv', 'w') as new_data:
    csv_writer = csv.writer(new_data)
    csv_writer.writerows([lout])
    csv_writer.writerows([lout1])

new_data.csv

id0,id1,id2
123,435,765

答案 1 :(得分:0)

我推断出您想将每个ID从写入列中的新行转换为同一行中的新列。

为此,您需要一次将整个数组传递给writerow():

更改:

for line in data:
    csv_writer.writerow(line)

收件人:

csv_writer.writerow(data)



编辑:由Does Python's csv.reader(filename) REALLY return a list? Doesn't seem so提供, 您还需要更改

data=csv.reader(out)

data=list(csv.reader(out))