【问题标题】:How to move values from one to another row/ column如何将值从一个移动到另一行/列
【发布时间】:2019-11-18 12:06:07
【问题描述】:

我正在尝试编写一个 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

【问题讨论】:

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


    【解决方案1】:

    我希望第一列是id0 不只是id,但这样做可以省去循环中的 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
    

    【讨论】:

    • 嗨 快速问题,即使数组中没有 5 个索引,有没有办法保持下面的格式?因此,如果源 csv 有 2 行 id,但目标 csv 应保留其他 3 个 id 列,但值将为空白。
    • @2tone_tony 我想回答你的问题,我只是需要澄清一下。对不起,我不知道你所说的“低于偶数的格式”是什么意思?我想你想编辑一个现有的 CSV,其中 row[0] 和 [1] 都有变量,现在你想在他们身边添加更多行?我会说看看 stackoverflow.com/questions/24662571/…>,但是看list(map(list,reader)),这样你就只是在使用 2D 列表。
    • @2tone_tony 另外,如果我理解你的问题是正确的,例如如果你以csv=[[id0,id1],[123,312],[435,543],[765,576]] 开头,那么你应该能够csv[0] = csv[0] + [id2,id3,id4]csv[1] = csv[1] + [454,554,654],然后正常使用写入CSV .另请查看 docs.python.org/3/library/csv.html#csv.writer>,它可能正是您要寻找的。​​span>
    • 抱歉,我忘了在“格式低于”source csv file id -- 123 234 564 目标中的预期结果id0 id1 id2 id3 id4 id5 -- -- -- -- -- -- 123 234 564 之后显示一个示例,想象一下 ID 是标题,数字在它们下面。
    • @2tone_tony csv_writer.writerows([lout1])csv_writer.writerows([['','','','','','']+lout1])。如果您需要更多帮助,请将您的代码发送给我;个人资料上的电子邮件。
    猜你喜欢
    • 1970-01-01
    • 2021-11-27
    • 1970-01-01
    • 1970-01-01
    • 2015-04-15
    • 1970-01-01
    • 2021-11-03
    • 1970-01-01
    • 2014-07-05
    相关资源
    最近更新 更多